2014-11-05 149 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