不接受Swift功能参数。缺少论点?
Calculate(theA, theB) //error: Missing argument label 'sideB:' in call
func Calculate(sideA: Int, sideB: Int) -> Int {
var ans = sideA + sideB
return ans;
}
答案 0 :(得分:2)
您在函数调用中缺少sideB:
。我不想重写你的代码(因为你发布了一张图片)但是这里是工作函数调用。
func calcButton(sender: AnyObject) {
let a: Int = 10
let b: Int = 11
calculate(a, sideB: b) //<-- Missing it here
}
func calculate(sideA: Int, sideB: Int) -> Int {
let a = sideA + sideB
return a
}
您可能还希望在函数调用中同时拥有这两个变量,以便您可以这样做:
func calcButton(sender: AnyObject) {
let a: Int = 10
let b: Int = 11
calculate(sideA: a, sideB: b)
}
func calculate(sideA A: Int, sideB B: Int) -> Int {
return A + B
}
仅仅是一个FYI,使用制表符完成而不是写出功能。 Xcode将通过占位符让您了解所有函数变量,以便您可以输入它们。
答案 1 :(得分:0)
你错过了swift 3中的sideB param名称第一个参数是可选的,但是第二个参数是强制性的,那里是_那是一个下划线。它改变了调用方法的方式。为了说明这一点,这是一个非常简单的功能:
func doStuff(thing: String) {
// do stuff with "thing"
}
它是空的,因为它的内容无关紧要。相反,让我们关注它的调用方式。现在,它被称为:
doStuff(thing: "Hello")
调用doStuff()函数时,需要编写thing参数的名称。这是Swift的一个功能,有助于使您的代码更易于阅读。但是,有时候,为第一个参数设置名称并不合理,通常是因为它内置在方法名称中。
当发生这种情况时,您使用下划线字符:
func doStuff(_ thing: String) {
// do stuff with "thing"
}
这意味着“当我调用此函数时我不想写东西,但在函数内部我想用东西来引用传入的值。