Swift でオプションを扱うための慣用句は、nil の場合にデフォルト値を提供するだけであれば、過度に冗長に思えます。
if let value = optionalValue {
// do something with 'value'
} else {
// do the same thing with your default value
}
不必要なコードの重複や
var unwrappedValue
if let value = optionalValue {
unwrappedValue = value
} else {
unwrappedValue = defaultValue
}
unwrappedValue
定数である必要はありません。
getOrElse
Scala の Option モナド (基本的には Swift の Optional と同じ考え方) には、この目的のためのメソッドがあります。
val myValue = optionalValue.getOrElse(defaultValue)
何か見落としているのでしょうか? Swift にはすでにそれを実行するコンパクトな方法がありますか? または、それができない場合は、getOrElse
Optional の拡張機能で定義することは可能ですか?
ベストアンサー1
アップデート
Apple は合体演算子を追加しました:
var unwrappedValue = optionalValue ?? defaultValue
この場合、三項演算子が役に立ちます
var unwrappedValue = optionalValue ? optionalValue! : defaultValue
Optional 列挙型に独自の拡張機能を提供することもできます。
extension Optional {
func or(defaultValue: T) -> T {
switch(self) {
case .None:
return defaultValue
case .Some(let value):
return value
}
}
}
次に、次の操作を実行します。
optionalValue.or(defaultValue)
or
しかし、他の開発者がメソッドを調べなくても、三項演算子の方がはるかに早く理解できるので、三項演算子を使用することをお勧めします。
注記: 私は始めましたモジュールこのような一般的なヘルパーをSwift にor
追加します。Optional