2016-11-27 5 views
1

質問1:letはオプションの場合のみ使用する必要があります"let"はオプションでのみ使用する必要がありますか? (スウィフト)

質問2:質問1で「はい」と答えた場合は、真か偽か何かを評価しますか?これを「if条件」で使用し、「条件が満たされた場合」の唯一の方法はtrueまたはfalseを評価することです。ここでは例:

var something:String? = " Hello " 

if let makeSomethingNew = something { 
    let final = makeSomethingNew + something 
} 

はmakeSomethingNewは=何かがここに真と評価しましょうか?

答えて

2

質問1

if letoptional bindingとしてknownsあります。

オプションでのみ動作します。次のコードはエラーを生成します:

var str = "Hello, playground" 

if let x = str { 
    print("success") // error: initializer for conditional binding must have Optional type, not 'String' 
} 

なぜですか? をオプションとしてのみ使用するため、Stringはオプションではありません。

Question2

とオプションは、すなわち設定されている場合はい、それは評価に値を持っています。詳細情報については

参照this answer

追加質問:なぜ我々がやっているように?

オプションは設定されているか、設定されていない(値を持っているかどうか)ためです。彼らは価値がある場合にのみ何かをしたい。彼らに価値がないなら、私たちは何もしたくない(どちらもクラッシュしたくない)。

また、アンラップにも使用できます。

var optionalString : String? = "hi" 

if let unwraped = optionalString { 
    print (unwraped) // hi | easier to work with 
    print(optionalString) // Optional("hi") | not so easy to work with 
} 
関連する問題