【发布时间】:2018-04-24 10:59:18
【问题描述】:
我在练习 Swift Optional 类型时发现了奇怪的(对我来说)行为。代码:
func returnOptionalIntFromString(_ val: String) -> Int? {
return Int(val)
}
func returnIntFromString(_ val: String) -> Int {
return Int(val) ?? 0
}
let optionalStr: String? = "10"
let mappedC1 = optionalStr.map(returnIntFromString)
let mappedC2 = optionalStr.map(returnOptionalIntFromString)
let flatMappedC1 = optionalStr.flatMap(returnIntFromString)
let flatMappedC2 = optionalStr.flatMap(returnOptionalIntFromString)
为什么要编译这行let flatMappedC1 = optionalStr.flatMap(returnIntFromString)?我将(String) -> Int 传递给接受(String) -> Optional<Int> 的函数,所以它一定是编译时错误?或者没有? :)
【问题讨论】: