New Swift! 2022 - unwrapping
2つのサイトを見ながら新しいところを試していきます。
今までが
var name: String? = "Linda"
if let name = name {
print("Hello, \(name)!")
}
これからは
if let name {
print("Hello, \(name)!")
}
"let name = name" が "let name" と短く、代入形式にしなくても良くなりました。
ここで、オプショナル、アンラップを復習しておきます。
通常の変数としては以下のように宣言しますが、
var greet: String = "Hello!"
Optional型では
var greet: String?
となります。何が違うかというと"nil"が代入できるかどうかです。"nil"というのは"何もない"ということです。
var greet: String = "Hello!"
greet = nil
とすると
エラーが出ます。通常の宣言した変数では"nil"は入れることができません。
そこで"optional"です。"nil"を入れることができるようにします。
と宣言すれば使えるようになります。
greet = nil
これで何も入っていない変数ができました。
2パターンでprint出力してみます。
var greet: String?
greet = nil
print(greet)
greet = "Hello"
print(greet)
if let greet{
print(greet)
}
順番に
nil
Optional("Hello")
Hello
と出力されます。"Optional("Hello")"と出ているのはアンラップという操作をしないまま出力されているのでOptionalがついたままの状態です。
アンラップの方法としては
強制的にする方法
var num: Int?
num = 10
var sum = num! + 10
print(sum)
num!として強制アンラップ。"!"がなければエラーとなります。
オプショナルバインディング、オプショナルチェイニングを使う方法(Sw
オプショナルバインディング
(Swift5.7の書き方。アンラッピングの記述が簡単に書けるようになりました)
if let
if let greet{
print(greet)
}
func testFunc(name: String?) {
guard let name else {return}
print(name)
}
オプショナルチェイニング
var greet: String? = "Hello"
print(greet?.uppercased())