2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Swiftのasってなんだ?

Last updated at Posted at 2019-04-10

as とは?

型を変換することを意味します。

###詳しく
例えば生き物を示すクラスCreature
これを継承したPersonがあるとします。

class Creature { ... }
class Person: Creature { ... }

Personクラスをインスタンス化するとPerson型のインスタンスが出来上がります。

let person = Person() //personはPerson型

このpersonCreature型の変数に入れてみます。

let creature: Creature = person

すると変数creaturePerson型からCreature型として認識されてしまい
Person型として扱えなくなってしまいます。

もう一度Person型として扱いたい!

そんな時に使うのがasです。

asを使ってCreature型からPerson型へダウンキャストします。

let personA = creature as! Person

これでpersonAPerson型として再度扱えるようになりました。
でも、ん? よく見るとas!!ってなんだ?

as、as!、as?の違い

いづれにおいてもasは型を変換することは間違い無いですが
必ず変換に成功するか?
この条件によってどれを使うかが変わってきます。

###必ず成功する場合
Person型はCreature型を継承しているため必ず型の変換に成功します。

let creature = Person() as Creature //asでOK!

###必ず成功するとは限らない場合
Creature型のインスタンスは必ずPerson型であるとは限りません

//as!かas?でないとだめ!
let person = Creature() as? Person //もし変換に失敗したらnilが返る
let person = Creature() as! Person //もし変換に失敗したらアプリがクラッシュ
2
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?