2017-08-31 65 views
0

編輯:好的,我誤解了任務。抱歉。創建一個Ruby方法,對整數數組應用操作

我真的無法在網上找到其他任何東西,也不要自己弄明白。 我想用Ruby中的方法從整數數組中刪除奇數條目。但是在我定義方法的時候,我只得到了錯誤。我怎樣才能讓這個方法明白這一點?

def even 
    a=[] 
    i=0 
    while i<=a.length 
    a[i]%2 == 1 
     a.delete(a[i]) 
     i+=i 
    end 
end 
even([1,2,3]) 
+0

我無法重現您的問題。在我定義方法的時候,我沒有得到任何「錯誤」。另外,「奇數條目」是什麼意思?我會將其解釋爲奇數索引,但從您的代碼外觀看,您似乎在尋找奇數條目。 –

+1

「我得到的錯誤」並不是一個足夠準確的錯誤描述,可以幫助我們。 *什麼*不起作用? *如何*不起作用?你的代碼有什麼問題?你有錯誤信息嗎?什麼是錯誤信息?你得到的結果不是你期待的結果嗎?你期望得到什麼結果?爲什麼?你得到的結果是什麼?兩者有什麼不同?你正在觀察的行爲不是所期望的行爲?什麼是期望的行爲,爲什麼,觀察到的行爲是什麼,以及它們以何種方式不同? –

+1

你能否提供一個你想要發生什麼的*精確*規範,包括任何和所有規則,這些規則的異常,角落案例,特殊情況,邊界案例和邊緣案例?您是否可以提供示例輸入和輸出,以顯示您在正常情況下以及所有例外情況,角落情況,特殊情況,邊界情況和邊緣情況下預期會發生的情況? –

回答

2

你可以簡單地使用Ruby陣列拒絕方法如下圖所示,

arr = [1,2,3,4,5,6,7,8] 
arr.reject{|v| v%2 == 1} 
# => [2, 4, 6, 8] 
+1

使用'v.odd?'代替:) –

0

在紅寶石它通常更容易在思考一個功能更強大的方式。在你的情況下,你想遍歷元素列表,選擇那些甚至是。要遍歷列表並使用謂詞選擇元素,請使用select。一個號碼已經有一個方法來檢查它是否是偶數(even?)。所以解決方案很簡單:

[1,2,3].select(&:even?) 

返回一個只有偶數的新列表。如果您想修改列表,請改用select!

相關問題