1. ホーム
  2. swift

[解決済み] Swift Optionals - 条件の変数バインディングはイニシャライザを必要とする

2022-02-14 12:10:50

質問

私はSwiftの初心者で、Optionalの概念を理解しようとしています。私はプレイグラウンドでコードの小さな部分を持っており、それは私に"条件内の変数バインディングは、初期化子を必要とする"エラーを与えている。誰かが、なぜ、どのように私はそれを修正する方法を説明することができますか?

私は、"score1"が値を持つかどうかによって、"Yes"か"No"を表示したいだけなのです。以下はそのコードです。

import Cocoa

class Person {
    var score1: Int? = 9

    func sum() {
        if let score1 {
            print("yes")
        } else {
            print("No")
        }
    }//end sum
 }// end person

 var objperson = person()
 objperson.sum()

解決方法は?

if let文は、オプションの変数を取ります。それがnilの場合、elseブロックまたは何も実行されません。もし値があれば、その値は非オプション型として別の変数に代入されます。

つまり、以下のコードでは、score1の値を出力するか、何もなければ"No"を出力することになります。

if let score1Unwrapped = score1
{
    print(score1Unwrapped)

}

else
{
    print("No")
}

同じものを短くすると、こうなります。

print(score1 ?? "No")

オプショナル変数に格納された値を実際に使用しないあなたの場合、値がnilであるかどうかをチェックすることも可能です。

if score1 != nil {
...
}