【发布时间】:2014-06-11 19:19:11
【问题描述】:
鉴于这个简单的柯里化函数:
func foo(x:Int)(y:Int)->String{
return "\(x) with \(y)"
}
我希望能够做这样的事情:
let bar = foo(1)
bar(2) //<- error: Missing argument label 'y:' in call
如果我将调用标记为bar(如bar(y:2)),一切正常。但我不明白为什么需要参数名称。有什么办法可以避免吗?
显而易见的事情:
func foo(x:Int)(_ y:Int)->String ...
似乎不起作用。
【问题讨论】:
-
不错!顶级 func 和类方法都存在此问题。
-
是的;甚至 Swift 书中的柯里化示例也显示了这一点(将其粘贴,删除第二个“手动”柯里化函数,您会得到“在调用中缺少参数标签 'b:'”)
-
把它写成 rdar://17359591。请随意欺骗。