在Swift3之前,可以通过显式地指定参数或传递精心设计的元组来调用函数。但是,当
SE-0029
已实现。
基本上,以下是可能的:
func buildDescription(name: String, age: Int) -> String {
return "Hi, I am \(name), and I am \(age)"
}
buildDescription("John Doe", age: 21)
// or, via a tuple, giving the same result
buildDescription(("John Doe", name: 21))
这个
Swift forums
关于上述变化,请发此帖(强调我的):
已接受Swift 3的建议。我们承认,我们正在删除一个有用的特性,而没有提供同样有表现力的替换。然而,
在类型检查器中维护此行为
是实现复杂性的严重来源,并积极干扰我们巩固类型系统的计划。
因此,看起来tuple支持的调用函数只在类型检查器级别被禁止,这意味着您不能直接将tuple传递给函数,但是编译器的内部保持不变,这允许间接传递tuple,就像在问题的示例中一样。