【发布时间】:2020-11-17 18:55:27
【问题描述】:
我需要将字符串数组转换为整数。
import UIKit
var test = ["1", "2"]
let test1 = Int(test)[0]
let test2 = Int(test)[1]
print(test1 + test2)
^ 这是我正在尝试做的基本想法,但我得到“没有上下文类型就无法解决对成员'下标'的引用”。这甚至可能吗?
【问题讨论】:
我需要将字符串数组转换为整数。
import UIKit
var test = ["1", "2"]
let test1 = Int(test)[0]
let test2 = Int(test)[1]
print(test1 + test2)
^ 这是我正在尝试做的基本想法,但我得到“没有上下文类型就无法解决对成员'下标'的引用”。这甚至可能吗?
【问题讨论】:
尝试在test 数组上使用下标,而不是在Int 初始化器的结果上:
var test = ["1", "2"]
let test1 = Int(test[0])
let test2 = Int(test[1])
但是,您可以以更快速的方式实现您的目标:
var test = ["1", "2"]
print(test.compactMap(Int.init).reduce(0, +))
或者只用reduce(_:_:):
var test = ["1", "2"]
print(test.reduce(0) { $0 + (Int($1) ?? .zero) })
【讨论】:
test.reduce(0){ $0 + (Int($1) ?? .zero)}
.zero 而不是0?
.zero 仅在实际类型未知时才需要 stackoverflow.com/a/58420510/2303865。我更喜欢使用 .zero 而不是 0 只是为了更好的可读性。事实上,这只是我的看法。使用任何你觉得舒服的东西。