Swift 具有关联值的枚举,得到 "missing argument label 'array' in call"
Swift enum that has associated values, got "missing argument label 'array' in call"
我正在学习 Swift。下面是我的代码:
enum MyTest
{
case Point(Int, Int)
case What(String)
case GiveMeFunc((array: Int...) -> Int)
}
var p1 = MyTest.Point(2, 2)
var p2 = MyTest.Point(3, 3)
var s1 = MyTest.What("Haha...")
var s2 = MyTest.What("Heihei...")
var f1 = MyTest.GiveMeFunc({(array: Int...) -> Int in return 8})
var f2 = MyTest.GiveMeFunc({(array: Int...) -> Int in return 9})
switch p1 {
case .What(let string):
println(string)
case .GiveMeFunc(let f):
println(f(1, 2, 4, 3))
case .Point(let a, let b):
println("a: \(a) b: \(b)")
}
当我 运行 我得到
missing argument label 'array' in call.
错误来自:
println(f(1, 2, 4, 3))`
如何修复错误?
通过插入 array:
标签:
case .GiveMeFunc(let f):
println(f(array: 1, 2, 4, 3))
因为函数的定义需要它:
case GiveMeFunc((array: Int...) -> Int)
或者,如果您将 GiveMeFunc
重新定义为没有命名参数,则您不必提供它:
case GiveMeFunc((Int...) -> Int)
如您在错误消息中所见:missing argument label 'array' in call
如果您查看闭包 GiveMeFunc((array: Int...) -> Int)
,它需要一个名为 array
的参数
所以错误消息是说你缺少那个参数名
所以通过这样做:println(f(array: 1, 2, 4, 3))
它有效
或者将闭包改为GiveMeFunc((Int...) -> Int)
我正在学习 Swift。下面是我的代码:
enum MyTest
{
case Point(Int, Int)
case What(String)
case GiveMeFunc((array: Int...) -> Int)
}
var p1 = MyTest.Point(2, 2)
var p2 = MyTest.Point(3, 3)
var s1 = MyTest.What("Haha...")
var s2 = MyTest.What("Heihei...")
var f1 = MyTest.GiveMeFunc({(array: Int...) -> Int in return 8})
var f2 = MyTest.GiveMeFunc({(array: Int...) -> Int in return 9})
switch p1 {
case .What(let string):
println(string)
case .GiveMeFunc(let f):
println(f(1, 2, 4, 3))
case .Point(let a, let b):
println("a: \(a) b: \(b)")
}
当我 运行 我得到
missing argument label 'array' in call.
错误来自:
println(f(1, 2, 4, 3))`
如何修复错误?
通过插入 array:
标签:
case .GiveMeFunc(let f):
println(f(array: 1, 2, 4, 3))
因为函数的定义需要它:
case GiveMeFunc((array: Int...) -> Int)
或者,如果您将 GiveMeFunc
重新定义为没有命名参数,则您不必提供它:
case GiveMeFunc((Int...) -> Int)
如您在错误消息中所见:missing argument label 'array' in call
如果您查看闭包 GiveMeFunc((array: Int...) -> Int)
,它需要一个名为 array
所以错误消息是说你缺少那个参数名
所以通过这样做:println(f(array: 1, 2, 4, 3))
它有效
或者将闭包改为GiveMeFunc((Int...) -> Int)