2015-02-10 180 views
1

我正在從蘋果書上快速學習。當在xcode中編寫代碼時,我收到錯誤的參數缺少窗體函數。函數的語法錯誤 - 缺少參數

根據蘋果的代碼應該是

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

同時調用這個函數:

println(halfOpenRangeLength(1, 10)) // According to Apple. 

但是當我鍵入上面一行,它說插入年底

因此該語句修改

println(halfOpenRangeLength(1, end:10)) 

爲什麼會發生這種情況?

感謝

回答

0

Swift總是給第一個參數一個本地參數名稱和沒有外部參數名稱。這意味着您在使用該方法時無需調用它。

之後,每個參數都有一個本地和外部參數名稱。這是爲了清楚起見。正如萊昂納多所說,你可以避免必須在參數名稱前加一個下劃線(_)來命名第二個參數。

如果您想要,也可以通過在參數名稱前面加上#標籤來爲第一個變量提供外部參數名稱。

您可以在蘋果的斯威夫特文檔簽出更多這方面的信息:https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Methods.html

0

使用此相反,我檢查了它和它的作品

func halfOpenRangeLength(start: Int, end: Int) -> Int { 
    return end - start 
} 
println("\(halfOpenRangeLength(1, 10))") 
+0

感謝您的快速響應。如果我需要將此結果存儲爲變量,如 var result:String = halfOpenRangeLength(1,10)); 順便說一句你建議的答案不適合我 – 2015-02-10 07:15:09

0

如果你不希望它要求你只需要添加_在它前面的參數名稱和它不會再bug你了:

        vv 
func halfOpenRangeLength(start: Int, _ end: Int) -> Int { 
0

斯威夫特給予自動體外名稱參數遵循以下規則:

  • 全局函數:沒有自動外部名稱
  • class/struct /枚舉方法:除第一個參數外的所有參數的自動外部名稱
  • 初始化:爲所有參數

也就是說,如果它不工作你的情況,你需要爲第二個參數指定外部名,比它可能意味着自動外部名稱您已將該函數聲明爲類或結構體方法,而不是全局函數。