質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

1回答

114閲覧

Swift3の「is」オペレーターの右辺を変数にするには

Fushihara

総合スコア52

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2017/09/26 02:56

Swift3でインスタンスが指定クラス・もしくは指定クラスを継承しているクラスであるか反映する「is」オペレーターがありますが
そのisオペレーターの右辺を変数にするにはどうしたらよいのでしょうか。

以下のようなコードがあり、変数vに入っている値がcheck変数に入っているクラスと同じ・もしくはcheck変数のクラスを継承しているかの判定を行いたいと思います。

swift

1class ROOT{} 2class A : ROOT{} 3class B : ROOT{} 4 5let v : ROOT = B() 6let check : ROOT.Type 7if true { // 実際は細かい条件 8 check = A.self 9}else{ 10 check = B.self 11} 12 13if v is check.Type { // ここのis文の右辺がcheck変数である 14 print("OK") 15}else{ 16 print("NG") 17}

右辺が変数ではない以下のパターンであれば、当然問題なく実行出来ます。

swift

1if is check B.Type{}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

swift

1if type(of: v) == check {

でどうでしょうか?

投稿2017/09/26 04:24

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問