首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Swift:在switch语句中测试类类型

Swift:在switch语句中测试类类型
EN

Stack Overflow用户
提问于 2014-09-08 20:41:51
回答 2查看 88.9K关注 0票数 246

在Swift中,您可以使用'is‘检查对象的类类型。如何将其合并到“switch”块中?

我认为这是不可能的,所以我想知道解决这个问题的最好方法是什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-09-08 20:47:52

您绝对可以在switch块中使用is。请参阅Swift编程语言中的“Any和AnyObject的类型转换”(当然,它并不限于Any )。他们有一个广泛的例子:

代码语言:javascript
复制
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")
    }
}
票数 518
EN

Stack Overflow用户

发布于 2018-12-13 21:50:35

我喜欢这个语法:

代码语言:javascript
复制
switch thing {
case _ as Int: print("thing is Int")
case _ as Double: print("thing is Double")
}

因为它提供了快速扩展功能的可能性,如下所示:

代码语言:javascript
复制
switch thing {
case let myInt as Int: print("\(myInt) is Int")
case _ as Double: print("thing is Double")
}
票数 23
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25724527

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档