代表任何元组的类型?

时间:2016-05-31 05:09:15

标签: swift types

似乎元组不能转换为“任何”类型。你知道代表任何元组的类型吗?

func myFunc(x: Any) {
}

myFunc( [12, 34, 56] ) // OK
myFunc( (78, 90, "Hello") ) // error: '((Int, Int, String)) -> ()' is not convertible to '(Any) -> ()'

3 个答案:

答案 0 :(得分:1)

似乎你必须明确地强制转换它,但它起作用了:

func myFunc(x: Any) {
}

myFunc( (78, 90, "Hello") as Any)

我认为这是必要的,因为将元组传递给函数的更常见情况是将元组分解为函数的单独参数(而不是作为参数本身)。

答案 1 :(得分:1)

如果您有可能,我建议使用通用功能:

func myFunc<T>(x: T) {
}

myFunc( [12, 34, 56] ) // OK
myFunc( (78, 90, "Hello") ) // Fine too

但是如果不知道你在你的职能中究竟做了什么,很难说清楚。

答案 2 :(得分:0)

我看到了SwiftyBeaver's code(谢谢)。然后我用他们的方式写了这个。

func myFunc(@autoclosure a: () -> Any) {
    let x = a()
}

myFunc( [12, 34, 56] ) // OK
myFunc( (78, 90, "Hello") ) // OK, too