【发布时间】:2021-07-15 17:12:24
【问题描述】:
考虑以下示例,其中foo 被明确定义为可选:
let foo: Int? = 10
let bar = foo.map { $0 * 2 }
这会按预期编译和工作。现在考虑一个使用可选链接的后续示例:
let foo: [Int]? = [0, 1, 2]
let bar = foo?.count.map { $0 * 2 }
编译失败并显示以下消息:
error: value of type 'Int' has no member 'map'
为什么编译器将foo?.count 视为Int 而不是Int??这违背了Swift Language Book:
为了反映可以对 nil 值调用可选链接这一事实,可选链接调用的结果始终是可选值,即使您正在查询的属性、方法或下标返回非可选值也是如此。
【问题讨论】:
标签: swift