我寫了方法,將用戶輸入(整數)數組從低到高排序並反向排序。代碼看起來像:Ruby中的排序方法
def alphabetize(arr, rev=false)
arr.sort!
if rev==true
arr.reverse!
end
return arr
end
puts "enter your numbers with 'space' between them"
text = gets.chomp
numbers = text.split(" ")
numbers.each do |element|
element.to_i
end
puts alphabetize(numbers)
我第一次只嘗試數字從0到9,並且方法已經正確工作。但後來我試圖輸入數字像1112,11,22和排序程序後,我得到了像這樣的結果「11 1112 22」。在此之後,我試圖改變這樣的代碼:
def alphabetize(arr, rev=false)
arr.sort!{|a, b| a.to_i <=> b.to_i}
if rev==true
arr.reverse!
end
return arr
end
puts "enter your numbers with 'space' between them"
text = gets.chomp
numbers = text.split(" ")
puts alphabetize(numbers)
而這樣一來我的代碼工作的11,1112,22產生我所期望的結果正確和排序輸入:「11,22,1112」。看起來我已經解決了這個問題,但我真的很想理解第一版和第二版代碼之間的區別。爲什麼方法排序以不同的方式工作?
但是爲什麼?我認爲,「每個」與「to_i」將我的數組的每個元素轉換爲整數,我錯了嗎? –
該方法是正確的,但每個你只是採取每一個元素並將其轉換,但沒有替換正在做 –
你也應該提出修正,以便你的答案被接受。我知道你先回答。 +1的努力。 –