如何在Swift中检查变量是否为元组?

如何在Swift中检查变量是否为元组?,swift,syntax,tuples,typechecking,Swift,Syntax,Tuples,Typechecking,阅读I see的Type Casting部分,我使用is关键字来检查变量的类型 func isString(test: AnyObject?) -> Bool { return test is String } 似乎当我尝试类似于检查包含三个NSNumber对象的元组时,我收到一个“元组不符合协议AnyObject”。有没有办法检查变量是否包含元组 func isTuple(test: AnyObject?) -> Bool { return test is (NS

阅读I see的Type Casting部分,我使用
is
关键字来检查变量的类型

func isString(test: AnyObject?) -> Bool {
    return test is String
}
似乎当我尝试类似于检查包含三个NSNumber对象的元组时,我收到一个“元组不符合协议
AnyObject
”。有没有办法检查变量是否包含元组

func isTuple(test: AnyObject?) -> Bool {
    return test is (NSNumber, NSNumber, NSNumber) // error
}

您可以这样做:

func isTuple(test: Any?) -> Bool{

    return test is (NSNumber, NSNumber, NSNumber)
}
不能在此处使用,因为不是类类型的实例

  • AnyObject
    可以表示任何类类型的实例
  • Any
    可以表示任何类型的实例,包括函数类型

相反,请尝试使用更通用的
Any
类型:

func isTuple(test: Any?) -> Bool {
    return test is (NSNumber, NSNumber, NSNumber)
}

isTuple("test") // false
let tuple: (NSNumber, NSNumber, NSNumber) = (Int(), Int(), Int())
isTuple(tuple) // true

你的函数没有返回类型,所以这是一个开始的好地方,这是多余的;当
is
单独返回
Bool
时,不需要额外的
if
语句。