2017-07-31 4 views
-1

私は暗黙のうちにアンラップされたオプションを迅速に理解しようとしていますが、下の画像のように2番目の変数に関して混乱しています。スイフト:変数aがオプションでない場合、なぜ変数bがオプションであるのですか?

please see image here

なぜ変数bはオプションですか?

+0

明示的な型宣言がなく、aからの値を持つためです。 ':Int'を型として設定してみてください –

+0

@ハミッシュありがとう) –

+1

*コードではなく画像を投稿してください。 –

答えて

1

変数bはオプションです。変数a 'が' nil 'を返す可能性があります。その場合はbもゼロになるためです。

編集: 特定のタイプを定義していない別の変数に任意の変数を割り当てました。 Xcodeは変数bをオプションとして作成することで、あなたを保存しています。この例を考えてみましょう:あなたへ

var a: Int! = 6 
a = nil 
let b: Int = a 
print(b) 

同様に、変数ここではタイプのIntのオプションであり、bはあまりにもint型のnonoptionalです。ここでは、特にbを、b変数とは違って、オプションではない整数と定義します。さて、もし私がそのポイントnilにあったaの値が割り当てられた変数を印刷しようとすると。これは危険で、単に代入文で致命的なエラーが発生します。コンパイラは、オプションの型の中でnil値を見つけて、それを非オプションに割り当てることを試みるので、クラッシュは単純に理解されます。

オプションはnil値を保持できます。したがって、別の変数bにオプションの(nillable)を割り当てた場合、依存する値はnillableなので、変数bもnillableなので、自動的にオプションとして扱われます。

+0

どのように可能な可能性がありますnil、それは非選択的であり、非選択的でないことは決してありません。可能であれば、例を挙げてください。 –

+0

編集が助けてくれることを願って。 – Rishabh

+0

ありがとう、今私はそれを得た。 –

関連する問題