[swift]デフォルト構文-傍観者
있을 수도 있고, 없을 수도 있어
は先鋒を見守るという意味です!これは、変数または定数に値があることを保証できないことを意味します.すなわち、変数や定数の値はnilである可能性があります!
気まずいでしょう?
よく聞いてみなさい.レツゴ
外来の
コードで肉眼で確認!
var myName: String = "ian"
myName = nil // 오류 !
var myName: String? = "ian"
myName = nil
print(myName) // nil
2つの和弦の違いが見えますか?上のコードにエラーが表示され、下のコードは正常に動作しています.
myName: String
の後ろに疑問符があるかどうか、あなたの処理を確認することができます!?
を通じて、nil
の価格に達することができます!発表しました!傍観者は列挙の形で実施されています!
見張りパイオニアの定義を理解しましょうか?
public enum Optional<Wrapped> : ExpressibleByNilLiteral {
/// The absence of a value.
///
/// In code, the absence of a value is typically written using the `nil`
/// literal rather than the explicit `.none` enumeration case.
case none
/// The presence of a value, stored as `Wrapped`.
case some(Wrapped)
/// Creates an instance that stores the given value.
public init(_ some: Wrapped)
守望先鋒はジェニーンリックに適した開放型だ.また、
ExpressibleByNilLiteral
プロトコルに従っていることもわかります.後ろの
case none
は値なしのキャビネットであり、case some
は値付きのキャビネットであり、相関値はWrapped
である.したがって、外部値が存在する場合、関連付けられた値Wrappedの一部に値が指定されます.つまり、Operinalという枚挙型の盾に守られている様子を想像することができます!
抽出
傍観者の値を非傍観者の値に抽出する方法があります!
強制抽出
これは
!
と書く方法です.これは最も簡単だが最も危険な方法なので、できるだけ使わないことをお勧めします.強制抽出時に終了プログラムに値(nil)がない場合、実行時エラーが発生します.
var myName: String? = "ian"
var ian: String = myName!
myName = nil
ian = myName! // 런타임 오류 !
if myName != nil {
print("제 이름은 \(myName) 입니다 ! ")
} else {
print("myName == nil")
}
// myNmae -== nil
実行時にエラーが発生する可能性が常にあるため、外部強制抽出メソッドの使用は避けてください.外部バインド
強制抽出よりも安全でスタイリッシュです!
if
またはwhile
文などと組み合わせて使用できます.var myName: String? = "ian"
// 옵셔널 바인딩을 통한 임시 상수 할당
if let name = myName {
print("제 이름은 \(name) 입니다 !")
} else {
print("myNmae == nil")
}
// 제 이름은 ian 입니다 !
// 옵셔널 바인딩을 통한 임시 변수 할당
if var name = myName {
name = "치킨" // var 변수이므로 내부에서 변경이 가능합니다 !
print("제 이름은 \(name) 입니다")
} else {
print("myName == nil")
}
// "제 이름은 치킨 입니다"
斜行if
文法のブロックの内部にname
という定数があるのを見ましたか?パスワードを安全にバインドし、
name
定数に入れます.なぜ守望先鋒を使うのですか?
プログラマー同士のシームレスなコミュニケーションに使用!
func optionalTest (name: String?) {
print(name)
}
// optionalTest 에는 String과, nil 값이 들어가야 되는구나 !
func optionalErrorTest (name: String) {
print(name)
}
// optionalErrorTest 에는 무조건 String이 들어와야 되는구나 !
推測できるから!出典:Sweet Programming(野熊)、iOSプログラミングのSweet基礎(野熊)
Reference
この問題について([swift]デフォルト構文-傍観者), 我々は、より多くの情報をここで見つけました https://velog.io/@ian/Swift-기본-문법-옵셔널テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol