2014-10-29 27 views
0

我把一些算法僞代碼斯威夫特,並具有以下功能:簡單斯威夫特函數返回錯誤

func max(a: [Int], b: Int) { 

    var result = a[0] 

    var i: Int 

    for (i = 1; i <= b; i++) { 
     if (a[i] > result) { 
      result = a[i] 
     } 
    } 
    return result 
} 

返回結果時,我得到一個錯誤:「詮釋」是無法轉換爲「()」

我有一個在線搜索,無法找到這個問題的答案,希望有人能指出我在正確的方向。

感謝

+1

爲了清晰起見,請注意,由於您的第一個函數參數'a'(Int的Array)不是m在函數調用中修飾它不應該被聲明爲'inout'。 – JMFR 2014-10-29 13:27:43

+0

謝謝JMFR - 我仍然試圖與inout握手。 – 2014-10-30 00:21:49

回答

2

返回類型中缺少函數聲明:

func max(inout a: [Int], b: Int) -> Int { 
           ^^^^^^ 

沒有返回類型,迅速默認爲空元組(),這就是錯誤的意思是:int是不可自由兌換到一個空元組。

另外請注意,您的return說法是錯誤的:它的最後一個右括號前右應該去

} 
    return result 
} 

,而不是

 return result 
    } 
} 
+0

啊,謝謝 - 我簡直不敢相信我錯過了! – 2014-10-29 13:15:56

0

必須實現的返回類型這樣

func max(inout a: [Int], b: Int)-> Int { 

var result = a[0] 
var i: Int 

for (i = 1; i <= b; i++) { 
    if (a[i] > result) { 
     result = a[i] 
    } 
} 
return result 
} 
+0

我不確定你的第一個例子是否有效。你能分享文檔中的哪個地方說你可以省略返回箭頭' - >'嗎? – JMFR 2014-10-29 13:34:59