【Swift】as?演算子を使ったキャストでは結果がoptionalとなる

公開日: : 最終更新日:2016/02/10 iPhoneアプリ開発

20141228-232009.jpg

今日はSwiftのas演算子とas?演算子について解説したいと思います。

スポンサード リンク

as演算子について

asはインスタンスをキャストします。

20141228-224846.jpg

上記コード15行目のように、より抽象度の高い型(この場合はクラスA)からより具体的な型(この場合はクラスB)へ型変換(ダウンキャスト)するのが主な使い方です。

ただし、継承関係のないクラス(この場合はクラスC)へダウンキャストすると、実行時にアプリが落ちてしまいます。

    

as?演算子について

20141228-225318.jpg

as?の場合、キャストが正しく行える場合にはそのインスタンス自身が返されますが、そうでない場合にはnilが返ります。よって結果はオプショナル型となります。

つまり、as?は型チェックとキャストを同時に実行しているようなものと言えるでしょう。

上記コード25行目のように、キャストが行えない(継承関係がない)場合にはnilが返ります。

    

20141228-230002.jpg

ちなみに、以下のようにオプショナル型に対してもas?でキャストを行うことができるようです。

35行目の変数a1の形がA?(オプショナル型)となっていますね。

    

20141228-230341.jpg

また、キャスト対象のオプショナル変数がnilの場合、as?の結果は常にnilとなるようです。

    

as?演算子の活用方法について

20141228-230948.jpg

上記コードの例では、配列arrayの中にある整数だけを合計しています。69行目のas?と70行目のifで、キャストと同時に型チェックを行っているのが分かると思います。

    

20141228-231404.jpg

また、if let構文を使って1行で型チェックとキャストを行うこともできます。

上記コードの例では、83行目と85行目で型チェックとキャストを行っています。

    

@akio0911はこう思った。

Swiftを使い始めて一番初めに頭が「???」となるのがオプショナル周り(?マークが付くもの)だと思うので、as演算子・as?演算子についてもしっかり押さえておきましょう。

ちなみにSwiftの文法については以下の書籍が詳しかったです。

この記事が気に入ったら「いいね!」しよう

follow us in feedly

Feedlyで最新記事を購読

Twitterで更新情報をゲット!

LINEでご感想・ご要望お送りください!
(スマホでLINEを起動 > 友だち追加 > QRコード)

関連記事

I20150714-010114.jpg

【Swift】Objective-Cで書いたクラスをメソッド単位で少しずつSwiftへ移行する方法

Objective-Cで作った既存のアプリをSwiftで書き直したいと思っているのですが、一

記事を読む

20160309-131202.jpg

ゆるい入門書では物足りない人向けの濃い内容!「本気ではじめるiPhoneアプリ作り」

ヤフー株式会社のiOSエンジニアである西 磨翁(にし まお)さんより、「本気ではじめるiPhon

記事を読む

I20160411-122213.jpg

Swift 2.2の変更点をまとめてみた

2016年3月22日、Xcode 7.3と共にSwift 2.2が正式にリリースされました。

記事を読む

20140724-103334.jpg

iPhoneアプリ開発にオススメの本10選(2014年7月版)

@akio0911です。2013年12月に「レベル・目的別!iPhoneアプリ開発おすすめ本

記事を読む

I20151119-165939.jpg

Swift 2.1に対応した本「詳解 Swift 改訂版」が出るぞ!

Swiftの文法に関する解説書の定番「詳解 Swift」の、Swift2.1に対応した改訂版「詳

記事を読む

I20160210-140020.jpg

【Xcode】モーダル表示で遷移先へ値を渡す時のハマりポイント

モーダル表示で遷移先の画面へ値を渡す際、最初はハマりやすいポイントについて解説したいと思いま

記事を読む

20150109-223509.jpg

【Xcode 6】対応する開き括弧と閉じ括弧を調べる方法

Xcodeで、対応する開き括弧と閉じ括弧のを調べる簡単な方法があったので紹介したいと思います!

記事を読む

20150406-121104.jpg

【アプリ開発】選んだ色をUIColorの生成コードに変換できる「Developer Color Picker」

選んだ色をUIColorの生成コードに変換できる「Developer Color Picker」

記事を読む

I20150805-182005.jpg

Swiftにおける関数型のエッセンスを学ぶために「関数プログラミング実践入門」を読み始めた

Swiftの関数型言語的な特徴についての話を各所で見るようになりましたが、自分は関数型言語の

記事を読む

20140721-170305.jpg

プロトタイピングのツールや手法を学べる「プロトタイピング実践ガイド」

株式会社インプレスさまより献本御礼。 プロトタイピング実践ガイド スマホアプリの効率的なデザイ

記事を読む

I20170521-225453.jpg
東京駅八重洲口の「羊肉酒場 悟大」で網焼きジンギスカンを頂きました!

ゆうせいさんと株式会社 大庄さんからご招待頂き、悟大withサッポ

I20170514-165235.jpg
iPhoneと連携できる体重体組成計「Withings Body Cardio」を使ってます

ジムに通い始めて体脂肪率が落ち始めたのをキッカケに、iPhoneと

I20170507-155440.jpg
【派手髪】ハーレイクイン風の髪色に染めてもらいました

2016年10月20日、ハーレイクイン風の髪色に染めてもらいました

I20170504-173110.jpg
【メンズネイル】東京・新宿のネイルサロンでターコイズのホログラムネイルしてもらった

ネイルネタが1年分くらい溜まっているので、ちょっとずつ書いていこう

I20170502-010117.jpg
SNUGGのライトニングケーブルが耐久性高し。8ヶ月使ってますが断線の気配なし!

iPhoneの充電&転送ケーブルであるLightningケーブルっ

→もっと見る

PAGE TOP ↑