2015-09-28 50 views
0

我已經寫了一個程序來發現使用的Xcode 7.0操場SWIFT 2.0的最大數量這是雨燕2.0編譯器錯誤@「使用未解決的標識符」

var arrofNumbare:Array = [1065782,4234,234,23,234,234,23,443,3978909,234000990]; 
var n:Int = 0 
var greatestnumbar : Int = arrofNumbare[0] 

while (n < arrofNumbare.count - 1) 
{ 
    greatestnumbar = greatest(greatestnumbar, b:arrofNumbare[n+1]) 
    n++; 
} 

print("\(greatestnumbar)") 

func greatest(a:Int , b:Int) -> Int 
{ 
    if(a > b) 
    { 
    return a 
    } 
    else 
    { 
    return b 
    } 
} 

一切工作正確的,但geeting以下錯誤同時調用方法enter image description here

回答

2

遊樂場運行順序寫入它們的代碼。

您遇到的麻煩是您已經在使用它的地方後定義了一個功能。

如果將函數移動到上面調用它的位置,則錯誤消失。

var arrofNumbare:Array = [1065782, 4234, 234, 23, 234, 234, 23, 443, 3978909, 234000990]; 
var n: Int = 0 
var greatestnumbar : Int = arrofNumbare[0] 

func greatest(a:Int , b:Int) -> Int 
{ 
    if(a > b) 
    { 
     return a 
    } 
    else 
    { 
     return b 
    } 
} 

while (n < arrofNumbare.count - 1) 
{ 
    greatestnumbar = greatest(greatestnumbar, b:arrofNumbare[n+1]) 
    n++; 
} 

print("\(greatestnumbar)") 

編輯補充

雖然不是你的問題的一部分,這裏是做你想做的事,雨燕的更好的方式;使用reduce函數

let array: [Int] = [1065782, 4234, 234, 23, 234, 234, 23, 443, 3978909, 234000990] 
let maximumValue = array.reduce(Int.min) { (accumulator, value) -> Int in 
    return max(accumulator, value) 
} 

reduce功能在累加器和接受一個初始值,並適用於這個累加器值和所述陣列中的下一個值的封閉件。在數組的每個元素上運行此塊後,將返回累加器值。在上面的關閉中,我只是將更大的累加器和下一個值存儲到該累加器中。

這是獲得最大價值的更清晰的方法。

因爲迭代整個數組和更新初始值的機制都是照顧好的,所以推理你的代碼也很容易。你可以看到,在你的嘗試中,大部分代碼都與迭代數組有關。