我正在尝试编写一行,该行的计算结果为 bool,表示可选的 Date 对象是否在未来。
我写了以下声明
let dateIsInFuture = (optionalDate ?? .now) >= .now
我很好奇这是否是一种不好的形式。特别是因为如果第一个和第二个 .now 在不同时间评估,它们可能不再相等。当然,我现在可以拉出到另一行来消除这种歧义......但我很好奇这是否适用于 swift 编译和运行这行代码的方式。
我正在尝试编写一行,该行的计算结果为 bool,表示可选的 Date 对象是否在未来。
我写了以下声明
let dateIsInFuture = (optionalDate ?? .now) >= .now
我很好奇这是否是一种不好的形式。特别是因为如果第一个和第二个 .now 在不同时间评估,它们可能不再相等。当然,我现在可以拉出到另一行来消除这种歧义......但我很好奇这是否适用于 swift 编译和运行这行代码的方式。
是的,这两个电话的时间会有(非常轻微的)不同。但在实践中这不太重要。
考虑使用
Optional.map(_:)
:不要默认为
.now
,而是默认为.distantFuture
或 ,.distantPast
以便清楚地了解在 nil 情况下您打算发生什么。根据您对 的使用>=
,我假设您的意思是:这也是决定是否可以将
optionalDate
其默认为更早的非可选的好时机.distantFuture
。那么你就可以避免很多??
andif let
代码。