0

我知道这是一个常见问题,但是在阅读了其他堆栈溢出问题之后,我就是不明白。

示例:我正在为一系列数字(Project Euler #5)编写一个最小公倍数函数,但我无法弄清楚为什么其中一个有效而另一个抛出错误:

作品:

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

为 nil:NilClass (NoMethodError) 引发错误未定义方法“长度”:

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

在此之上,我检查了 fact_list2 是一个数组,但它似乎没有任何区别。我在这里想念什么?

4

1 回答 1

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()
于 2013-10-03T16:19:22.110 回答