Swift 例 :
if let sourceViewController = sender.sourceViewController as? MealViewController, meal = sourceViewController.meal {
...
}
ドキュメントには次のように記載されています:
...コードはそのビューコントローラーをローカル定数sourceViewControllerに割り当て、sourceViewControllerのmealプロパティがnilであるかどうかを確認します。
質問:Swiftでは、この例のようにMealViewController
の後にカンマがある)ifステートメントで複数の条件を使用できますか?
ドキュメントではこれを見ていません。
はい、書きます
if let a = optA, let b = optB, let c = optC {
}
Swiftは、すべての割り当てが適切に完了しているの場合にのみ、IF
の本体を実行します。
この手法の別の機能:割り当てはorderで行われます。
したがって、値がa
に適切に割り当てられている場合にのみ、Swiftはb
に値を割り当てようとします。以下同様です。
これにより、以前に定義した変数/定数を次のように使用できます
if let a = optA, let b = a.optB {
}
この場合(2番目の割り当てで)a
を安全に使用しているのは、わかっているであるため、そのコードが実行されると、a
に有効な値が入力されます。
はい。 Swift:ドキュメンテーション:言語ガイド:基本:オプションのバインディング 言います:
単一の
if
ステートメントには、必要に応じてカンマで区切って、オプションのバインディングとブール条件をいくつでも含めることができます。オプションのバインディングの値のいずれかがnil
であるか、ブール条件がfalse
に評価される場合、if
ステートメントの条件全体がfalse
と見なされます。次のif
ステートメントは同等です。if let firstNumber = Int("4"), let secondNumber = Int("42"), firstNumber < secondNumber && secondNumber < 100 { print("\(firstNumber) < \(secondNumber) < 100") } // Prints "4 < 42 < 100" if let firstNumber = Int("4") { if let secondNumber = Int("42") { if firstNumber < secondNumber && secondNumber < 100 { print("\(firstNumber) < \(secondNumber) < 100") } } } // Prints "4 < 42 < 100"