Swift:如何测试变量是一个SequenceType?

时间:2014-08-09 05:56:03

标签: swift xcode6

我的目的是检查变量是否为SequenceType

以下是代码:

let a = []
a is SequenceType

XCode 6 beta 5 playground标记了这些错误:

enter image description here

我还尝试了另一种语法:

a.isMemberOfClass(SequenceType)

这次XCode 6 beta 5游乐场显示了这些错误:

enter image description here

我在这里有两个问题:

1)这些错误信息在每种情况下意味着什么?

2)测试a是否适合某种类型的子类?

1 个答案:

答案 0 :(得分:0)

您无法动态检查SequenceType一致性。

编译器试图说SequenceType有一个typealias Generator: GeneratorType,一个带有类型要求的协议(typealias)只能用作泛型类型的约束,例如:< / p>

func doSomethingOnSequence <S: SequenceType> (seq: S) {
    for i in seq {
        println(i)
    }
}

doSomethingOnSequence(a)

由于您可以使用泛型,因此可能比使用is检查类型更好。

如果您仍想尝试检查不太通用的类型,那么您正在做正确的操作(仅使用错误的类型):

let a: Any = []

a is Range<Int>
a is [String]
// and so on...