我想知道如何获得数组中某些元素的和? 例如,下面是我的数组,我只需要对前5个元素求和:

var num = [31, 28, 31, 30, 30, 31, 30, 31, 30, 29, 31, 31]

我试着用Range来做这件事,但没有成功:

for I in 0..<num[5] {
  .....
}

推荐答案

for I in 0..<nums[5]不是以您预期的方式工作,因为nums[5]是"nums的第五个(索引为0的)元素".所以你写的是as if:

for i in 0..<31 { ... }

这不是你想要的.

要迭代num数组的前5个元素,您需要首先对其进行切片.这里有两种方法可以做到这一点:

  1. 请求包含5个元素的前缀:

    for n in nums.prefix(5) { print(i) }
    
  2. 从开头开始切片,直到第5个元素(在索引4处):

    for n in nums[...4] { print(i) }
    

这两个答案都会打印前5个数字(31、28、31、30、30).

总而言之,您可以使用循环手动完成:

var sum = 0

for n in nums.prefix(5) { sum += n }

print(sum)

或者更简洁地说,reduce个:

let sum = nums.prefix(5).reduce(0, +)

Swift相关问答推荐

在Swift中initt()完成后运行一个函数

启用完成并发判断以及如何解决警告(续)

在SWIFTUI&39;S视图修改器中使用等待关键字

Swift图表';chartXVisibleDomain挂起或崩溃

SwiftUI 组合问题:通过 AppEventsManager 在 ViewModel 之间共享数据

计算 CoreData 中所有唯一对象的数量?

RealityKit - 从中心zoom 模型

macOS 的窗口框架中使用的真实类型和真实类型是什么?

SwiftUI - Select 器没有 Select 值

展开 List 中的 HStack 以端到端但不是从上到下,因此看起来项目之间有更宽的空间

swift:修改字典中的数组

是否可以在 Swift 中创建通用闭包?

获取设备图像比例(例如@1x、@2x 和@3x)

如何在 Swift 中将对象归零

在 unwind segue 之后执行 push segue

如何停止 NSTimer.scheduledTimerWithTimeInterval

Switch 语句中的字符串:String不符合协议IntervalType

无法将 NSAttributedString.DocumentAttributeKey 类型的值转换为 .DocumentReadingOptionKey

Swift 中的单元测试致命错误

iPhone 纵向和 iPad 横向的通用应用程序