对数组求和 - Objective-C

Posted

技术标签:

【中文标题】对数组求和 - Objective-C【英文标题】:Sum an Array - Objective-C 【发布时间】:2011-01-10 04:50:32 【问题描述】:

我刚刚开始,我正在寻找一种简单的方法来求和一个简单的数组。我已经阅读了关于键值编码的苹果开发者网站,但我不明白如何将其应用于我的数组,或者这是否是总结这一点的适当方式。

我的键值编码的绊脚石是 .keypathToProperty - 我可以理解您需要在 2D 数组中进一步引用,但它们不显示数组代码,只显示行标题的键路径所以我还想不通。

NSMutableArray *numArray = [NSMutableArray arrayWithCapacity:4];
    [numArray addObject:num1];
    [numArray addObject:num2];  
    [numArray addObject:num3];
    [numArray addObject:num4];

感谢您的回复!

谢谢

格雷厄姆

【问题讨论】:

【参考方案1】:

自动的方法是:

NSNumber * sum = [numArray valueForKeyPath:@"@sum.self"];

但如果您刚刚开始,我建议您避免使用集合键路径运算符并采用更简单的方法:

double sum = 0;
for (NSNumber * n in numArray) 
  sum += [n doubleValue];

【讨论】:

天啊,我不知道@sum.self,哇,我每天都在提醒我有多少我不知道。 有趣的是,还有像“max.self”、“min.self”这样的键......很棒的解决方案..【参考方案2】:

Swift 3:(Dave DeLong's method 转换):

let sum = (numArray as AnyObject).value(forKeyPath:"@sum.self") as! Double

这应该与它的 Objective-C 对应物以类似的方式工作。

【讨论】:

我知道您将其作为使用键路径的示例,但对于任何较新的 Swift 读者,您可能希望使用 reduce! let sum = numArray.reduce(0) $0 + $1 @MikeSprague:我并不反对你认为哪个更合适,尽管我对你为什么不应该提出替代方法的推理感兴趣。我喜欢这种方法的原因是,对于涉及的代码量,它对于包含混合整数和字符串值的数组非常有效。【参考方案3】:

在 Swift 4 中:

let array = [1,2,3,5]
let sum = array.reduce(0, $0 + $1)
print(sum)

【讨论】:

以上是关于对数组求和 - Objective-C的主要内容,如果未能解决你的问题,请参考以下文章

python数组求和

如何对数组列表的元素求和?

如何在Ruby中对数组中对象的属性求和

python数组求和

请问js中对象数组求和代码怎么实现?

Python numpy数组对某些索引求和