为什么 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")

第一个参数不需要有标签;它可以包含在方法名称中(更明确!)。