为什么 Swift 方法只需要第二个输入的标签?
Why do Swift methods only require label for second input?
调用函数时,我不需要标记输入值。当调用 class 内部的方法时,我被要求标记 only 第二个输入。为什么?!
func addVals(value1: Int, value2: Int) -> Int{
println(value1)
println(value2)
let value3 = value1 + value2
println(value3)
return value3
}
let val1 = 1
let val2 = 6
// this works with no labels
addVals(val1, val2) // evals to 7
// in a class
class testClass {
func addVals(value1: Int, value2: Int) -> Int{
println(value1)
println(value2)
let value3 = value1 + value2
println(value3)
return value3
}
func callAddVals() -> Int {
let val1 = 35
let val2 = 46
// only second input needs label??!!
return addVals(val1,value2: val2)
}
}
这样方法名称就可以像自然语言一样读起来。看一看:
mySpriteNode.runAction(dance, withKey:"NodeDance")
参数标签 withKey
很好地说明了那个字符串是什么,但是看到下面版本中的冗余了吗?
mySpriteNode.runAction(action:dance, withKey:"NodeDance")
第一个参数不需要有标签;它可以包含在方法名称中(更明确!)。
调用函数时,我不需要标记输入值。当调用 class 内部的方法时,我被要求标记 only 第二个输入。为什么?!
func addVals(value1: Int, value2: Int) -> Int{
println(value1)
println(value2)
let value3 = value1 + value2
println(value3)
return value3
}
let val1 = 1
let val2 = 6
// this works with no labels
addVals(val1, val2) // evals to 7
// in a class
class testClass {
func addVals(value1: Int, value2: Int) -> Int{
println(value1)
println(value2)
let value3 = value1 + value2
println(value3)
return value3
}
func callAddVals() -> Int {
let val1 = 35
let val2 = 46
// only second input needs label??!!
return addVals(val1,value2: val2)
}
}
这样方法名称就可以像自然语言一样读起来。看一看:
mySpriteNode.runAction(dance, withKey:"NodeDance")
参数标签 withKey
很好地说明了那个字符串是什么,但是看到下面版本中的冗余了吗?
mySpriteNode.runAction(action:dance, withKey:"NodeDance")
第一个参数不需要有标签;它可以包含在方法名称中(更明确!)。