構文の切り替え
→変数/定数などに一定の値は保証できません.値はゼロの場合があります.
**外部変数/定数でない場合、nil値は指定できません.つまり、オープン(追加?)でなければなりませんが、nil値を指定できます.
var myName : String? = "kevin"
myName = nil
print(myName)
//nil
関数パラメータが非パラメータの場合は、「ああ、このパラメータには値は必要ない」とすぐに知る必要があります.
傍観者は、値がある場合と値がない場合の2つのケースとして定義されます(enum)
→nilの場合none case、値がある場合caseとなります.
→傍観者に値がある場合、いくつかの関連する値Wrappedに値が割り当てられます
強制抽出:
var myName: String? = "kevin"
//옵셔널이 아닌 변수에는 옵셔널 값이 들어갈 수 없음. 추출해서 할당해야 함
var name: String = myName!
myName = nil
name = myName!
//오류
if myName!=nil{
print("name is \(myName!)")
}else{
print("name == nil")
}
外部バインド:var myName: String? = "yagom"
// 옵셔널 바인딩을 통한 임시 상수 할당
if let name = myName{
print("name is \(name)")
}
else{
print("nil")
}
//name is yagom
// 옵셔널 바인딩을 통한 임시 변수 할당
if var name = myName{
name = "kevin"
print("my name is \(name)")
}
else{
print("nil")
}
//my name is kevin
→nameは一時定数/変数です.コードブロック以外では使用できません複数の傍観者値を抽出する場合:
var myName: String? = "yagom"
var yourName: String? = nil
if let name = myName, let friend = yourName{
print("\(name), \(friend)")
}
//friend 에 바인딩이 되지 않으므로 오류
yourName = "eric"
if let name = myName, let friend = yourName{
print("\(name), \(friend)")
}
//yagom eric
暗黙抽出条件var myName: String! = "yagom"
print(myName)
//yagom
myName = nil
if let name = myName{
print("\(name)")
}else{
print("nil")
}
→おすすめの方法ではないReference
この問題について(構文の切り替え), 我々は、より多くの情報をここで見つけました https://velog.io/@kevinkim2586/스위프트-문법-옵셔널テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol