2012-10-15 37 views

回答

5

你想找到最大值?它已經完成了。 (包括可枚舉模塊或任何東西)

[1, 5, 3].max # => 5 
1

紅寶石陣列具有max method

a = [20, 30, 100, 2, 3] 
a.max # => 100 

如果你想寫自己的教育目的,你可以迭代這個數組,同時保持最大在每個點看到值:

class Array 
    def my_max 
    max = nil # Default "max" to nil, since we haven't seen any values yet. 
    self.each { |x| max = x if (!x || x>max) } # Update with bigger value(s). 
    max # Return the max value discovered. 
    end 
end 

或者,如果你有興趣在函數式編程考慮使用Enumerable reduce method,其中g eneralizes在my_max版本的過程,並使用ternary operator爲簡潔:

class Array 
    def my_max2 
    self.reduce(nil) { |max,x| (!max || x>max) ? x : max } 
    end 
end 
+0

你的'my_max'實現對新手來說太火箭科學了,恐怕。我會把它寫成更長的形式並添加評論。 –

+0

@SergioTulentsev:是的,好點。除了火箭科學之外,我還添加了一個簡單明瞭的註釋版本! =) – maerics

0

,你可以簡單地調用max

a = [1,2,3,4] 
a.max # outputs 4 

也爲最低值,你可以做

a.min # outputs 1 
1

如果你是比較整數,然後

[1,3,2].max will do the work 

,如果你是比較存儲在字符串格式整數,嘗試:

["1","3","2"].map(&:to_i).max 

這將如果你要你的字符串數組轉換成int數組第一,並應用最大方法

經常使用這種比較,我建議你以int格式存儲實際的數組,所以它實際上爲你節省了一些工作時間。