Swift:函数调用之间的区别

Uma*_*ari 4 iphone ios swift

我是Swift编程的新手.我无法理解以下代码.在以下代码中调用

  1. incrementBy方法:我必须在第二个参数中键入numberOfTimes.但,
  2. sampleFunc方法:我不必在第二个参数中键入lastName.

    class Counter {
    var count: Int = 0
    func incrementBy(amount: Int, numberOfTimes : Int) {
        count += amount * numberOfTimes
    }
    }
    
    var counter = Counter()
    counter.incrementBy(1, numberOfTimes : 3)
    print(counter.count)
    
    func sampleFunc(firstName : String, lastName : String){
    print("Hello \(firstName) \(lastName)")
    }
    
    sampleFunc("Abel", "Rosnoski")
    
    Run Code Online (Sandbox Code Playgroud)

为什么会有细微差别?请解释.

NSN*_*oob 5

当封装在类(或结构或枚举)中时,方法的第一个参数名称不包含在外部,而所有后面的参数名称都包含在外部.不包含在外部的参数,在调用方法时不必为它们指定名称.但是对于外部包含的那些你必须这样做.

您的方法incrementBy(amount: Int, numberOfTimes : Int)封装在您的类中,这就是为什么第二个参数自动外部包含的原因.这意味着您必须numberOfTimes在为参数提供值之前键入.这就是为什么你必须这样称呼它:

counter.incrementBy(1, numberOfTimes : 3)
Run Code Online (Sandbox Code Playgroud)

你的第二种方法func sampleFunc(firstName : String, lastName : String)没有包含在你的课程中.这就是为什么您不必为其参数提供名称的原因.这就是为什么你可以这样称呼它:

sampleFunc("Abel", "Rosnoski")
Run Code Online (Sandbox Code Playgroud)

你可以在这里阅读更多细节.

编辑:正如User3441734所指出的那样(并且我引用)"有一个例外.如果外部名称未指定为_,则带参数的init总是需要命名参数".您可以在此处详细了解自定义初始化.