【问题标题】:Function parameter error - Missing Argument Label Anomaly - SWIFT函数参数错误 - 缺少参数标签异常 - SWIFT
【发布时间】:2014-11-05 11:16:46
【问题描述】:

我有一个奇怪的问题(我可以克服但我想正确理解我的错误)。

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

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

}

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

ranNum(1, 10)

但是,在常规的 Swift 文件中,它会生成错误消息:Missing argument label 'hi:' in call。现在我可以通过这种方式调用函数来克服这个问题:

ranNum(1, hi:10)

除了阅读起来有点困难之外,它为什么在 Playgrounds 中起作用以及为什么它只需要第二个参数标签而不需要两者都没有意义。任何关于我不明白的帮助将不胜感激。

【问题讨论】:

    标签: xcode function swift


    【解决方案1】:

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

    • 全局函数:没有隐式外部名称
    • 类/结构方法:为第一个之后的所有参数自动定义外部名称
    • 初始化器:为所有参数自动定义外部名称

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

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

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

    您提到在操场上调用该函数无需任何外部参数名称 - 我可能会争辩说:

    • 在 Playground 中,您可以将该函数作为全局函数
    • 在其他测试中,该函数是类/结构方法

    我说的对吗?

    【讨论】:

    • 感谢 Antonio,不到 10 分钟就找到了所有解决方案。我也很欣赏文档的解释和链接。是的,您假设我在 Playground 中使用它是正确的,因此结果如您所述。感谢您的帮助,谢谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 2014-07-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多