0

我的用例涉及一个 switch 语句并尝试构建一个依赖于多个类型转换的案例。这真的会帮助我介绍一些可组合/干净/更少的代码。通用多重条件在我使用let强制转换时不起作用,并且它不能被突变。此外,fallthrough 也会产生类似的错误。

case let foo as SomeStruct,
     let foo as SomeOtherStruct:
        // do whatever

错误:模式变量绑定到类型

case let foo as SomeStruct:
     fallthrough
case let foo as SomeOtherStruct:
     // do whatever

'fallthrough' 无法将控制权转移到声明变量的 case 标签

这些错误都是有道理的。基本上,我问是否有任何方法可以进行类型转换/模式匹配let foo as SomeStruct || SomeOtherStruct

编辑:有关更多上下文,我正在使用 ReSwift 进行减速器组合

4

1 回答 1

1

那这个呢?

struct S1 {
    var a : String
}
struct S2 {
    var a : Int
}
let x = S1(a: "Test")
switch x {
    case let y where (y is S1) || (y is S2): print("S1 or S2")
    default: break
}
于 2017-11-29T14:02:17.843 回答