在Swift中,可以使用"is"判断对象的类类型.如何将其合并到"switch "块中?

我认为这是不可能的,所以我想知道最好的解决办法是什么.

推荐答案

你绝对可以在switch街区使用is.请参阅Swift编程语言中的"任意和任意对象的类型转换"(当然不限于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")
    }
}

Swift相关问答推荐

SwiftUI map 旋转

从后台线程获取@发布属性的值(不更改它)是正确的吗?

在SWIFT中使用Objective-C struct 时出错(在作用域中找不到类型)

不能将符合协议的SWIFT类的实例分配给需要该协议的Objective-C属性

如何使用可搜索在搜索栏中搜索包括>或<?

计算 CoreData 中所有唯一对象的数量?

在 RealityKit 中查找特定模型的 findEntity(named:) 方法的替代方法?

URL appendPathComponent(_:) 已弃用?

Swift // Sprite Kit:类别位掩码限制

Swift-SceneKit-无法从art.scnassets加载.scn文件

如何从数据中读取以空结尾的字符串?

如何在填充上添加 if else 语句? SwiftUI

如何让不同的组件拥有不同的动画?

`IndexSet` 永远不会是空的?

无法从自定义动态框架(Swift)访问类

Swift 函数 vs 惰性变量 vs 计算(computed)属性 - 区别?

iOS:检测设备是否为 iPhone X 系列(无框)

如何在Swift中找出字母是字母数字还是数字

自动布局:获取 UIImageView 高度以正确计算单元格高度

Swift:创建 UIImage 数组