以更快速友好的方式重写

  • 本文关键字:方式 重写 arrays swift
  • 更新时间 :
  • 英文 :


给定一个可选整数数组,我计算非nil的值,直到(并包括)给定的索引。我把代码写在下面。有别的方法可以得到同样的结果吗?一种更快捷的方式?

下面是我的代码:
func getValuesCount(upTo index: Int, in values: [Int?]) -> Int {
return values[0 ... index].filter { value in return value != nil }.count
}

一个稍微简化的方法是使用compactMap而不是显式检查nil的值。即使传入的索引大于数组,也可以使用prefix来获取前n个值。当只有一行正确类型的结果时,return是可选的。

func getValuesCount(upTo index: Int, in values: [Int?]) -> Int {
values.prefix(index).compactMap { $0 }.count
}

参数名称upTo表示范围应该是..<index而不是...index。因此,使用prefix(index)与使用..<index类似。如果你想包含index,那么你可能需要prefix(index + 1)

最新更新