gpt4 book ai didi

swift - 测试 Swift Optionals 的惯用方法

转载 作者:搜寻专家 更新时间:2023-11-01 05:38:13 26 4
gpt4 key购买 nike

我不是在问这些扩展是否是个好主意,这只是一个思想实验,我正在尝试从实践中学习。

同意 Christian Lattner 的观点,方法通常更可取,我想我会尝试表达:

someVariable.isNil

someVariable.notNil

在实现它时,我发现自己很好奇以下实现中的一个或另一个是否比另一个更可取,原因是什么?一个人会比其他人更有效率吗?是否存在以一种或另一种方式更好的边缘情况。

解决方案一:

extension Optional {
var isNil:Bool {
switch self {
case .None:
return true
case .Some:
return false
}
}

var notNil:Bool {
switch self {
case .None:
return false
case .Some:
return true
}
}
}

解决方案 2:

extension Optional {
var isNil:Bool {
return self == nil
}

var notNil:Bool {
return self != nil
}
}

最佳答案

我不确定这些方法有多大用处,但它们是讨论的一个很好的起点。

看一下 Optional 的当前实现:

https://github.com/apple/swift/blob/ecd3c07a86394aa6b1372f1370f470842b39ea6e/stdlib/public/core/Optional.swift

在顶部附近,您可以看到它自己最原始的表示使用 .None 和 .Some。因此,解决方案 1 是最直接的方法,开销最少,并且遵循 Optional 自身实现中使用的模式。我会说这算作惯用语。

使用 operator == 只会增加不必要的间接访问,甚至不会像您展示的那样工作。

关于swift - 测试 Swift Optionals 的惯用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34360374/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com