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")
}
}