2014-11-05 150 views
1

我有一个奇怪的问题(我可以克服,但我想正确理解我的错误)。函数参数错误 - 缺少参数标签异常 - 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) 

除了它只是作为一个有点难以阅读,这就是为什么它在操场也是为什么它仅需要第二个不决策意识:现在我可以通过调用函数这种方式克服这个参数标签,而不是两者。任何帮助,我不明白什么,将不胜感激。

回答

5

这就是所谓的external parameter name,默认情况下:

  • 全局函数:没有隐含的外部名
  • 类/结构方法:外部名称第一
  • 后,所有参数的自动定义初始化程序:所有参数的外部名称自动定义

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

您可以通过在_前加上一个本地参数名称来覆盖该名称。你的情况:

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

您提到,在操场上调用函数,不需要任何外部参数名的作品 - 我可能会说:在操场

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

对吗?

+0

谢谢安东尼奥,解决方案发现在不到10分钟。我也很感谢解释和文档的链接。是的,你假设我在游乐场中的使用是正确的,因此你记下了结果。感谢您的帮助,谢谢:) – Frankeex 2014-11-05 11:43:14