0
さて、私はルビが引数を関数に渡す方法について混乱しました。配列をルビ関数に渡す
def buble_sort(arr)
unordered = true
while unordered
unordered = false
for i in (1..arr.size-1)
if(arr[i-1] > arr[i])
arr[i-1], arr[i] = arr[i], arr[i-1]
unordered = true;
end
end
end
arr
end
ARR値を変更しないでください、このメソッドを呼び出す:私はルビーが値を通過ドキュメントを読み込むが、それはreferanceここ 渡しているように私の場合には、それが見えてきた問題ですルビーはそれを価値によって受け渡すからです。しかし、私の場合、はオリジナルの配列を変更しますか?どうして? コード:
p "#{arr} before sort" # => "[85, -4, 1, 2, 55, 23, 0] before sort"
p buble_sort(arr) # => [-4, 0, 1, 2, 23, 55, 85]
p "#{arr} after sort" # => "[-4, 0, 1, 2, 23, 55, 85] after sort"
参照は値です。あなたが同じ配列で操作している配列をコピーしない限り。 –
[参照または値でRubyが渡されますか?](http://stackoverflow.com/questions/1872110/is-ruby-pass-by-reference-or-by-value) – anquegi
オブジェクトを作成するか、新しいオブジェクトを作成する。 g。 'def buble_sort(* arr)' –