对数组求和 - 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的主要内容,如果未能解决你的问题,请参考以下文章