Swift で Optional にデフォルト値を設定するには? 質問する

Swift で Optional にデフォルト値を設定するには? 質問する

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定数である必要はありません。

getOrElseScala の Option モナド (基本的には Swift の Optional と同じ考え方) には、この目的のためのメソッドがあります。

val myValue = optionalValue.getOrElse(defaultValue)

何か見落としているのでしょうか? Swift にはすでにそれを実行するコンパクトな方法がありますか? または、それができない場合は、getOrElseOptional の拡張機能で定義することは可能ですか?

ベストアンサー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

おすすめ記事