强制使用参数名称,但只使用其中的一些

时间:2015-05-12 10:10:19

标签: ios swift

我是Swift的新手,我已经阅读了Swift Function Documentation,据我所知,必须以这种方式构建一个函数:

func funcName(param1:Type, param2:Type) -> Return {
    //Whatever istructions
}

必须这样称呼:

funcName(1, 2);

非常简单,这里来自最初的Apple文档:

func halfOpenRangeLength(start: Int, end: Int) -> Int {
    return end - start
}

println(halfOpenRangeLength(1, 10))
// prints "9"

因此,在调用halfOpenRangeLength函数的最后一个示例中,我不必指定参数的名称(startend)。

所以我在XCode中完成了我的功能:

func assegnaRisposte(uno:String, due:String, tre:String, quattro:String){
    button1.setTitle(uno, forState: UIControlState.Normal)
    button2.setTitle(due, forState: UIControlState.Normal)
    button3.setTitle(tre, forState: UIControlState.Normal)
    button4.setTitle(quattro, forState: UIControlState.Normal)
}

但是当我这样称呼它时,我收到错误Missing argument lables 'due:tre:quattro:' in call

assegnaRisposte("Davide", "Andrea", "Sergio", "Roberto")

XCode修复程序强迫我这样做:

assegnaRisposte("Davide", due: tre: "Andrea", "Sergio", quattro: "Roberto")

所以我强迫要放置3个参数名称。如果我放置第一个参数(uno)会抛出错误,所以我必须只放duetrequattro

据我所知,我可以指定参数名称在参数前放置一个破折号,而且,我没有强制使用它们。

有人可以解释一下这是为什么吗?

2 个答案:

答案 0 :(得分:2)

Swift在命名方面的功能和方法之间存在差异,基本上是:

  • 功能的默认命名是没有外部 参数名称。
  • 方法的默认命名是外部的 参数名称需要第一个参数。

您可以阅读方法和功能herehere之间的差异。

<强>更新

如果您不想使用外部参数名称,则应声明方法,如:

B pb = (B)Enhancer.create(B.class, new HelloInvocationHandler());
pb.m1();

答案 1 :(得分:0)

从Apple的The Swift Programming Language一书中查看本节:

  

Local and External Parameter Names for Methods

     

本地名称和外部名称的默认行为是不同的   用于功能和方法。

     

Swift在方法中给出了第一个参数名称本地参数   默认情况下命名,并提供第二个和后续参数名称   默认情况下为本地和外部参数名称。