27
Optionalの使い方 株式会社ネクスト 成田元輝 1Swift勉強会@ネクスト

Optionalの使い方 第1回 Swift勉強会@ネクスト

Embed Size (px)

DESCRIPTION

第1回 Swift勉強会@ネクストで、OptionalというSwiftの言語仕様について発表した際のスライドです。

Citation preview

Page 1: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optionalの使い方株式会社ネクスト 成田元輝

第1回 Swift勉強会@ネクスト

Page 2: Optionalの使い方 第1回 Swift勉強会@ネクスト

自己紹介• 成田元輝 @mo_to_44

• 個人でiPhoneアプリを開発

• 2014年5月 株式会社ネクスト入社iOS開発グループで働き始める HOME’Sアプリ担当しています

• まさかのSwift発表に困惑した1週間

Page 3: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optionalとは

Page 4: Optionalの使い方 第1回 Swift勉強会@ネクスト

The Swift Programming Language

“Swift is a type safe language”

Optionalとは

Page 5: Optionalの使い方 第1回 Swift勉強会@ネクスト

The Swift Programming Language

“Optionals are an example of the fact that Swift is a type safe language”

Optionalとは

Page 6: Optionalの使い方 第1回 Swift勉強会@ネクスト

Swiftでは通常の型にnilの代入はできない

var someValue: Int = nil

Optionalとは

Page 7: Optionalの使い方 第1回 Swift勉強会@ネクスト

×Swiftでは通常の型にnilの代入はできない

var someValue: Int = nil

Optionalとは

Page 8: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optionalを指定するとnilの代入が可能になる

var someValue: Int? = nil

Optionalとは

Page 9: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optionalを指定するとnilの代入が可能になる

var someValue: Int? = nil

Optionalとは

Page 10: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optionalを指定するとnilの代入が可能になる

var someValue: Int? //nil!!

※Optional型に初期値を設定しない場合、自動的にnilになる

Optionalとは

Page 11: Optionalの使い方 第1回 Swift勉強会@ネクスト

値が入らないかもしれない=nilとなる可能性のある変数は、宣言時に”?”をつけてOptional型とする

!

Optionalは値が入るかもしれないし、入らないかもしれない、“オプション”の変数に使用する

!

Optionalとは

Page 12: Optionalの使い方 第1回 Swift勉強会@ネクスト

Forced Unwrapping

Page 13: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optional型の変数を通常の型の変数に代入することは可能?

Forced Unwrapping

var number: Int? = 42!var newNumber: Int = number

Page 14: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optional型の変数を通常の型の変数に代入することは可能?

Forced Unwrapping

var number: Int? = 42!var newNumber: Int = number×

Page 15: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optional型の変数を通常の型の変数に代入することは可能?

Forced Unwrapping

var number: Int? = 42!var newNumber: Int = number×Optional型の変数にはnilが入っている可能性がある

Page 16: Optionalの使い方 第1回 Swift勉強会@ネクスト

Forced Unwrapping

Optional型のUnwrapping=解除を行う

Optional型の変数に”!”をつける

var number: Int? = 42!var newNumber: Int = number!

Page 17: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optional型のUnwrapping=解除を行う

Optional型の変数に”!”をつける

Forced Unwrapping

var number: Int? = 42!var newNumber: Int = number!

ただし!

Page 18: Optionalの使い方 第1回 Swift勉強会@ネクスト

Forced Unwrapping

var number: Int? = nil!var newNumber: Int = number!

Unwrappingした変数がnilだった場合、 ランタイムエラーとなる

Page 19: Optionalの使い方 第1回 Swift勉強会@ネクスト

Forced Unwrapping

var number: Int? = nil!var newNumber: Int = number!

Unwrappingした変数がnilだった場合、 ランタイムエラーとなる

コンパイラによる型チェックが行われず、せっかくのType SafetyなSwiftの言語仕様を台無しにしてしまう

Page 20: Optionalの使い方 第1回 Swift勉強会@ネクスト

Forced Unwrapping

var number: Int? = nil!var newNumber: Int!!if number {! newNumber = number!!}else{! println("There isn't value")!}

“!”を使ってUnwrappingする際は、if文でnilのチェックをしましょう

Page 21: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optional Binding

Page 22: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optional Binding

var number: Int? = 42!var newNumber: Int!!if let validNumber = number {! newNumber = validNumber!}else{! println("There isn't value")!}

nilチェックを行いながら、一時的な変数、定数を使用する

Page 23: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optional Binding

var number: Int? = 42!var newNumber: Int!!if let validNumber = number {! newNumber = validNumber!}else{! println("There isn't value")!}

nilチェックを行いながら、一時的な変数、定数を使用する

Page 24: Optionalの使い方 第1回 Swift勉強会@ネクスト

Optional Binding

var number: Int? = nil!var newNumber: Int!!if let validNumber = number {! newNumber = validNumber!}else{! println("There isn't value")!}

nilチェックを行いながら、一時的な変数、定数を使用する

Page 25: Optionalの使い方 第1回 Swift勉強会@ネクスト

まとめ

Page 26: Optionalの使い方 第1回 Swift勉強会@ネクスト

まとめ• 値が入らない可能性のある変数は”?”をつけて

Optionalにする必要がある

• ”!”を使ったForced Unwrappingはコンパイラによるチェックが効かなくなり、さらにランタイムエラーになる可能性もあるのでなるべく使わない方が良さそう

• Optionalな変数はif文+”!”、あるいはOptional

Bindingでnilチェックをしてから使用しましょう

Page 27: Optionalの使い方 第1回 Swift勉強会@ネクスト

ご清聴ありがとうございました