swift - 为什么我不能调用 map (_ transform: (Wrapped) -> U) -> U?并同时使用可选链接?
问题描述
解决方案
显然,出于某种原因,将第一部分括在括号中是有效的:
(s?.hashValue).map(Double.init)
我认为这在某种程度上是由于?
优先级较低,或者可选链接与其他表达式的工作方式不同。添加括号可能会导致s?.hashValue
成为表达式。
编辑:
以下是Swift 参考的相关摘录:
如果包含可选链接表达式的后缀表达式嵌套在其他后缀表达式中,则只有最外层的表达式返回可选类型。在下面的示例中,当 c 不是 nil 时,它的值被解包并用于评估 .property,其值用于评估 .performAction()。整个表达式 c?.property.performAction() 具有一个可选类型的值。
所以s?.hashValue
实际上并不计算为可选类型,因为它嵌套在另一个表达式中。通过添加()
,我将其分离为另一个表达式,手动使其评估为可选类型。
推荐阅读
- java - 为什么这是一个可用于将 String 识别为 IP-Adress 的有效模式?java.util.regex.模式
- python - 用于时间序列分析的 Convolution 1D 解释
- git - 还原原点的原点
- c# - c# 反序列化 Json 字符串
- c++ - 调用类函数后类成员为空
- c++ - C++ 入门第 5 版:放置新
- excel - 对范围内的多个值使用 XLookup
- javascript - 我该如何解决这个问题?使用“this”监听器
- python - 仅当我编译我的代码时,Python“ModuleNotFoundError: No module named 'bindings'”错误
- python - 添加 values_list 会产生 AttributeError