これらの拡張機能が良いアイデアかどうかを尋ねているわけではありません。これは単なる思考実験であり、実践から学ぼうとしています。
Christian Lattner に同意して、一般的には方法が望ましいということで、私は次のように表現できるようにしてみようと思いました。
someVariable.isNil
と
someVariable.notNil
それを実装して、次の実装のいずれかが他の実装よりも優れているかどうか、またその理由は何ですか? 他のものよりも効率的でしょうか。いずれかの方法でより良いエッジケースがあるでしょうか。
解決策 1:
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
}
}