2016-05-31 46 views
3

看来,元组不能转换为'任何'类型。你知道代表任何元组的类型吗?代表任何元组的类型?

func myFunc(x: Any) { 
} 

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

回答

1

如果这对你是一个可能性,我建议你使用一个通用的函数:

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

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

但很难说没有确切知道你在你的函数做什么。

1

看来你必须明确地投它,但后来它的工作原理:

func myFunc(x: Any) { 
} 

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

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

0

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

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

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