函数参数错误 - 缺少参数标签异常 - SWIFT

时间:2014-11-05 11:16:47

标签: xcode function swift

我有一个奇怪的问题(我可以克服但是我希望能够正确理解我的错误)。

我有一个小的随机数生成器函数,我经常使用它:

func ranNum(low: Int, high:Int) -> UInt32 {
var result = arc4random_uniform(UInt32((high+1)-low)) + low
return result

}

当我在XCode游乐场中使用它时,如果我传入类似的内容,它可以正常工作:

ranNum(1, 10)

但是,在常规的Swift文件中,它会生成错误消息:缺少参数标签' hi:'在电话中。现在我可以通过这种方式调用函数来克服这个问题:

ranNum(1, hi:10)

除了它只是稍微难以阅读之外,为什么它在Playgrounds中起作用以及为什么它只需要第二个参数标签而不是两者都是有意义的。对我不理解的任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:5)

这称为external parameter name,默认情况下为:

  • 全球职能:没有隐含的外部姓名
  • class / struct方法:在第一个
  • 之后为所有参数自动定义外部名称
  • 初始值设定项:为所有参数自动定义外部名称

如果未明确指定,外部名称的名称与本地参数的名称相同。

您可以通过在_前添加本地参数名称来覆盖它。在你的情况下:

func ranNum(low: Int, _ high:Int) -> UInt32 {
    ...
}

你提到在操场上调用函数时没有任何外部参数名称 - 我可能会说:

  • 在游乐场中,您将该功能作为全局功能
  • 在其他测试中,该函数是一个类/结构方法

我是对的吗?