📚

swift オプショナルチェイニング"とは

2024/05/15に公開

オプショナルチェイニング、swiftの言語機能の一つで、nilチェックを簡単に行うことができる方法です。らしいです
わかりやすくいうと、条件分を記載せずにオプショナルに設定した値がnilか否かで条件分岐を行うことができるということです。

例のコードを記載します

let someOptional: Int? = nil
if let unwrappedValue = someOptional {
  print("Value is \(unwrappedValue)")
} else {
   print("Value is nil")
}

上記のコードの分解を行います。
someOptional変数を定義しています。
※someOptional変数はオプショナルなInt型の値を保持する変数であるそしてnilであることも許容されるということ


if let unwrappedValue = someOptional {
print("Value is (unwrappedValue)")
} else {
print("Value is nil")
}
そして、someOptionalはオプショナルのInt型になるので、その値がnilの場合とnilでない場合の条件分岐を行うことができる。

もっとシンプルなソース

var hogege   String? = "hoge"
var hogegege String? = nil

print(hogege?.uppercased())//
print(hogegege?.uppercased())

String? →Stringオプショナル型
※nilの可能性があるStringの値を格納する時に使用する

print(hogege?.uppercased())
※hogege?という形で変数を呼び出すことでオプショナルチュイニングとなるhogege変数が、nilの場合にその後の処理が実行されず、nilが返される。

オプショナルチェイニングを使用することで
hogege変数がnilの場合 →処理は実行されずにnilが返される
hogege変数がnilでない場合 →処理が実行されHOGEGと出力される

という感じです
僕的に覚えておきたいのは、
呼び出しの際に変数に?がついていたらオプショナルチェイニング、swiftの言語機能の一つで、nilチェックを簡単に行うことができる方法です。らしいです
わかりやすくいうと、条件分を記載せずにオプショナルに設定した値がnilか否かで条件分岐を行うことができるということです。

例のコードを記載します

let someOptional: Int? = nil
if let unwrappedValue = someOptional {
  print("Value is \(unwrappedValue)")
} else {
   print("Value is nil")
}

上記のコードの分解を行います。
someOptional変数を定義しています。
※someOptional変数はオプショナルなInt型の値を保持する変数であるそしてnilであることも許容されるということ


if let unwrappedValue = someOptional {
print("Value is (unwrappedValue)")
} else {
print("Value is nil")
}
そして、someOptionalはオプショナルのInt型になるので、その値がnilの場合とnilでない場合の条件分岐を行うことができる。

もっとシンプルなソース

var hogege   String? = "hoge"
var hogegege String? = nil

print(hogege?.uppercased())//
print(hogegege?.uppercased())

String? →Stringオプショナル型
※nilの可能性があるStringの値を格納する時に使用する

print(hogege?.uppercased())
※hogege?という形で変数を呼び出すことでオプショナルチェイニング、swiftの言語機能の一つで、nilチェックを簡単に行うことができる方法です。らしいです
わかりやすくいうと、条件分を記載せずにオプショナルに設定した値がnilか否かで条件分岐を行うことができるということです。

例のコードを記載します

let someOptional: Int? = nil
if let unwrappedValue = someOptional {
  print("Value is \(unwrappedValue)")
} else {
   print("Value is nil")
}

上記のコードの分解を行います。
someOptional変数を定義しています。
※someOptional変数はオプショナルなInt型の値を保持する変数であるそしてnilであることも許容されるということ


if let unwrappedValue = someOptional {
print("Value is (unwrappedValue)")
} else {
print("Value is nil")
}
そして、someOptionalはオプショナルのInt型になるので、その値がnilの場合とnilでない場合の条件分岐を行うことができる。

もっとシンプルなソース

var hogege   String? = "hoge"
var hogegege String? = nil

print(hogege?.uppercased())//
print(hogegege?.uppercased())

String? →Stringオプショナル型
※nilの可能性があるStringの値を格納する時に使用する

print(hogege?.uppercased())
※hogege?という形で変数を呼び出すことでオプショナルチェーンとなるhogege変数が、nilの場合にその後の処理が実行されず、nilが返される。

オプショナルチェイニングを使用することで
hogege変数がnilの場合 →処理は実行されずにnilが返される
hogege変数がnilでない場合 →処理が実行されHOGEGと出力される

という感じです
僕的に覚えておきたいのは、
呼び出しの際に変数に?がついていたらオプショナルチェーンが発動しているんだなぁということとなるhogege変数が、nilの場合にその後の処理が実行されず、nilが返される。

オプショナルチェイニングを使用することで
hogege変数がnilの場合 →処理は実行されずにnilが返される
hogege変数がnilでない場合 →処理が実行されHOGEGと出力される

という感じです
僕的に覚えておきたいのは、
呼び出しの際に変数に?がついていたらオプショナルチェーンが発動しているんだなぁということが発動しているんだなぁということ

Discussion