今回の内容
- 学習を始めてまだ1ヶ月くらいの時によく理解出来なかった
guard let x = y else { return }
について、自分なりに解説していきます。
コードと簡単解説
* いきなりですがguard let x = y else { return }
について、自分が学習する中で得た答えは、未計画なnil
が引き起こすエラー
を回避する為に使用しています。
例コード1
下記のコードの場合,
変数y
がnil
で無い時にprint(x)
を働かすことができます。-
実際に下記のコードを動かすと、
print(x)
は働きません。- 理由は、
変数y
を宣言する時にString?
で宣言をしています。 -
var y:String?
の様に?
を書いて宣言すると、値にはnil
が入ってしまいます。 - なので
print(x)
を働かすにはguard let x = y else { return }
の処理より前に、変数y
がnil
では無い状態にしないといけません。
- 理由は、
var y:String?
override func viewDidLoad() {
super.viewDidLoad()
guard let x = y else { return }
print(x)
}
例コード2
- 下記のコードの場合,
変数y
が宣言時にnil
を値として持っています。 - ですが、
guard let x = y else { return }
の処理の前で、"Not nil"
を変数y
に入れています。 - よって
変数y
の値がnil
では無い状態になったのでprint(x)
を働かすことができます。
var y:String?
override func viewDidLoad() {
super.viewDidLoad()
y = "Not nil"
guard let x = y else { return }
print(x)
}
終わり
ご指摘、ご質問などありましたら、コメントまでお願い致します。