1. ホーム
  2. ios

[解決済み] Swift における演算子

2022-03-02 17:56:35

質問

The Swift Programming Language"の本(599ページ)で、私はこのコードスニペットに出会い、ちょっと混乱してしまいました。それは次のようになりました。

func buyFavoriteSnack(person:String) throws {
    let snackName = favoriteSnacks[person] ?? "Candy Bar"
    try vend(itemName:snackName)
}

その解説は

buyFavoriteSnack(_:)関数は、与えられた人の好きなお菓子を調べて、それを買ってあげようとする関数です。もし、好きなお菓子がなければ、お菓子を買おうとします。もし相手が...

この説明は、与えられたコードの中の"?"演算子にどのように対応させることができますか。私たち自身のコードでこの構文をいつ使うべきですか/使えますか?

どのように解決するのですか?

nil合体演算子(デフォルト演算子とも呼ばれる)です。 a ?? b の値です。 a (すなわち a! ) でない限り anil となり、その場合 b . すなわち、もし favouriteSnacks[person] が見つからない場合、代入 "Candy Bar" を使用します。

EDIT 技術的には次のように解釈できる。(以下、Badar Al-Rasheed氏の回答より)

let something = a != nil ? a! : b