Swift: switch ステートメントでクラス型をテストする 質問する

Swift: switch ステートメントでクラス型をテストする 質問する

Swift では、「is」を使用してオブジェクトのクラス タイプを確認できます。これを「switch」ブロックに組み込むにはどうすればよいでしょうか?

それは不可能だと思うので、これを回避する最善の方法は何なのか疑問に思っています。

ベストアンサー1

isブロック内では絶対に使用できますswitch。Swift プログラミング言語の「Any および AnyObject の型キャスト」を参照してください (もちろんこれに限定されるわけではありませんAny)。広範な例があります:

for thing in things {
    switch thing {
    case 0 as Int:
        println("zero as an Int")
    case 0 as Double:
        println("zero as a Double")
    case let someInt as Int:
        println("an integer value of \(someInt)")
    case let someDouble as Double where someDouble > 0:
        println("a positive double value of \(someDouble)")
// here it comes:
    case is Double:
        println("some other double value that I don't want to print")
    case let someString as String:
        println("a string value of \"\(someString)\"")
    case let (x, y) as (Double, Double):
        println("an (x, y) point at \(x), \(y)")
    case let movie as Movie:
        println("a movie called '\(movie.name)', dir. \(movie.director)")
    default:
        println("something else")
    }
}

おすすめ記事