您好,我正在學習一些Ruby代碼。在Ruby中實現快速排序:Ruby中的Splat運算符(快速排序示例)
1 def qsort(lst)
2 return [] if lst.empty?
3 x, *xs = *lst
4 less, more = xs.partition{|y| y < x}
5 qsort(less) + [x] + qsort(more)
6 end
考慮:
lst = [1, 2, 3, 4, 5]
x, *xs = *lst
我不知道如果我明白了什麼線3做正確:
從我的觀察和實驗,這將指派1
從lst
至x
,以及其餘的lst
至xs
。
而且我發現這兩個都在做同一件事:
相當於
x, *xs = lst
我的問題是,這是什麼不錯的功能的名稱(我將編輯標題事後適應)?然後我可以自己學習更多關於這個Ruby特性的知識。對不起,如果這是一個重複的問題,因爲我不知道關鍵字來搜索這個問題。
qsort函數是一些漂亮的ruby代碼。爲什麼'x,* xs = lst'等於'x,* xs = * lst'的原因是因爲x,y = [1,2]等於x,y = 1,2,是'x,y = * [1,2]'。顯然,在第一種情況下,如果在正確的站點上有一個數組,並且在您要分配的左側站點上有多個變量,則會出現隱式的圖示。 – Linki