見出し画像

New Swift! 2022 - unwrapping

2つのサイトを見ながら新しいところを試していきます。

Swift5.7ではオプショナル型のアンラップ(unwrap)が簡単に書けるようになったということです。

今までが

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"を入れることができるようにします。

var greet: String?

と宣言すれば使えるようになります。

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())


この記事が気に入ったらサポートをしてみませんか?