スウィフトオプション(Optionals)タイプ
欠損値を処理するときに使用スウィフトオプション(オプション)タイプ、。 任意の手段」が値であり、それは、xに等しい」または「値がありません」。
Swfit言語定義サフィックス? 速記の名前付きの型などのオプションは、他の言葉では、次の2つのステートメントは等価です。
var optionalInteger: Int? var optionalInteger: Optional<Int>
両方の場合において、可変optionalIntegerは任意の整数型です。 タイプで、ということに注意してください? 間にスペースはありません。
オプションは例、なしといくつかの(T)の両方を含有しない列挙です、それはよい示すために使用されるか、値を持っていない可能性があります。 任意の型を明示的に(または暗黙的な変換)、オプションの型として宣言することができます。 あなたは時間の任意の型を宣言すると、ブラケットを使用してください? オペレーター適切な範囲。 例えば、任意の整数配列宣言は、書かれるべきである(INT []);?INT []エラーのように書きます。
時の初期値は、その値のデフォルトはnilに利用できない変数やオプションのオプションの属性を宣言するとき。
オプションのフォローLogicValue契約は、それはブールコンテキストで表示できます。 オプションのtype Tは?値Tのいずれかのタイプが含まれている場合この場合、(つまり、その値はOptional.Some(T)であると言うことです)、このオプションのタイプは、それ以外の場合はfalseです、真等しいです。
値が含まれているタイプの任意のインスタンスの場合は、後置演算子を使用することができます! 次のように値にアクセスするには:
optionalInteger = 42 optionalInteger! // 42
演算子を使用してください! 実行時エラーが発生しますnilにオプションの変数を取得することはあります。
あなたはオプションの式で操作を実行するために選択的にオプションのリンクおよびオプションのバインドを使用することができます。 値がnilであると、何も操作は、実装されていないエラーが実行されません。
のは、アプリケーションのスウィフトオプションの種類を確認するには、次の例を見てみましょう:
import Cocoa var myString:String? = nil if myString != nil { print(myString) }else{ print("字符串为 nil") }
上記プログラムの実行結果:
字符串为 nil
オプションの種類は、Objective-Cではnilのポインタの値に似ていますが、のみ有用であるが、オプションのゼロクラス(クラス)への種類のすべてのタイプのために利用可能な、より安全です。
解決することを余儀なく
オプションの値が含まれていないタイプを決定したら、感嘆符の後ろに任意の名前を追加することができます(!)の値を取得するには。 感嘆符は、 "私はそれを使用し、オプションの値があることを知っている。」と述べた。これは(アンラップ強制)必須オプションの構文解析された値と呼ばれています。
例としては、次のとおりです:
import Cocoa var myString:String? myString = "Hello, Swift!" if myString != nil { print(myString) }else{ print("myString 值为 nil") }
上記プログラムの実行結果:
Optional("Hello, Swift!")
強制分析オプションの値は、感嘆符(!)を使用します:
import Cocoa var myString:String? myString = "Hello, Swift!" if myString != nil { // 强制解析 print( myString! ) }else{ print("myString 值为 nil") }
上記プログラムの実行結果:
Hello, Swift!
注意:
使用!
存在しないオプションの値は、実行時エラーになります取得するには。 使用!
分析値を強制する前に、必要に応じて決定する非含有しなければならないnil
値を。
自動的に解析
変数オプションの感嘆符を宣言するときには、疑問符を置き換えることができます(!)(?)。 あなたは感嘆符をプラスする必要はありません(!)の値を取得するには、このオプションの変数を使用する場合は、自動的に解析します。
例としては、次のとおりです:
import Cocoa var myString:String! myString = "Hello, Swift!" if myString != nil { print(myString) }else{ print("myString 值为 nil") }
上記プログラムの実行結果:
Hello, Swift!
オプションのバインド
それは一時的な変数または定数を置くために割り当てられた値が含まれている場合は、オプションのタイプは、値が含まれているかどうかを判断する(結合オプション)オプションのバインディングを使用しました。 文は、オプション型の値を判断し、定数または変数に値を代入する場合としながら結合オプションで使用することができます。
結合オプションで書かれたこのif文のように:
if let constantName = someOptional { statements }
のは、単純な代替結合インスタンスを見てみましょう:
import Cocoa var myString:String? myString = "Hello, Swift!" if let yourString = myString { print("你的字符串值为 - \(yourString)") }else{ print("你的字符串没有值") }
上記プログラムの実行結果:
你的字符串值为 - Hello, Swift!