2011-09-02 30 views
0

我想根據它們的索引從數組中拉出兩個值。爲什麼my_arr [3,0]失敗時Array分配my_arr [0,3]工作?

不幸的是,當最後一個索引爲零,我不知道爲什麼。

my_array = ["a", "b", "c", "d", "e", "f", "g"] 

my_array[1,2] 
# => ["b", "c"] 

my_array[0,2] 
# => ["a", "b"] 

my_array[2,0] 
# => [] 

爲什麼最後的分配無法拉出元素2和0?

我懷疑我的操作是不是其實做什麼,我想,因爲在所有增加第三個指標,使整個事情會失敗:

my_array[1,2,3] 
# => ArgumentError: wrong number of arguments (3 for 1..2) 

什麼我竟與數組做[VAR1,VAR2]語法我該怎麼做?

+1

你的意思 「而'my_arr [3,0]不成?」 –

+0

修正 - 謝謝 –

回答

4

my_array[start,length][docs]語法:

返回一個子數組開始啓動,並繼續爲長度元素

這是my_array.slice(start, length);

短的語法,你應該這樣做相反:

my_array.values_at(2, 0) 
=> ["c", "a"] 

Array#values_atArray#slice

+0

謝謝你 - 那就是我一直在做錯的事。在閱讀你的答案後,我重新閱讀文檔,發現你仍然可以使用'values_at(index1,index2,index3)' –

+0

'我只是更新答案來添加'values_at' :) – arnaud576875

相關問題