2013-10-03 92 views
0

我知道,這是一個常見的問題,但通過其他堆棧溢出問題看完之後,我只是不明白這一點。紅寶石未定義的方法'長」的零:NilClass

例子: 我正在寫一最小公倍數功能的數字範圍(項目歐拉#5),我想不通爲什麼這些作品之一,而另一個引發錯誤:

工作原理:

fact_list2 = fact_list2.reject {|i| i == reject1} 
count2 = length2 - fact_list2.length() 

引發Error未定義的方法`長度」的零:NilClass(NoMethodError):

count2 = length2 - fact_list2.reject! {|i| i == reject1}.length() 

在此之上我有一個檢查使得f act_list2是一個數組,但它似乎沒有任何區別。我在這裏錯過了什麼?

+0

整數已經有一個[LCM方法](http://www.ruby-doc.org/core-1.9.3/Integer.html#method-i-lcm)。 – steenslag

+0

陣也有可能是這種操作的有用的計數方法。 – hirolau

+0

是的,我想通過建設自己的LCM方法來學習的Ruby語法。不知道計數方法,所以非常感謝 – toppy42

回答

2

reject!只返回如果發生改變的陣列,否則返回nil

http://ruby-doc.org/core-2.0.0/Array.html#method-i-reject-21

假設你需要fact_list2永久拒絕那些值,你可能需要將其保持兩線,採用reject!但仍可以縮短:

fact_list2.reject! {|i| i == reject1} 
count2 = length2 - fact_list2.length() 
相關問題