我知道这是一个常见的问题,但是在阅读了其他堆栈溢出问题之后,我就是不明白。
例:我正在为一系列数字编写一个最不常见的多重函数(欧拉项目 #5),我无法弄清楚为什么其中一个有效而另一个会抛出错误:
工程:
fact_list2 = fact_list2.reject {|i| i == reject1}
count2 = length2 - fact_list2.length()
抛出错误 nil:NilClass (NoMethodError) 的未定义方法 'length' :
count2 = length2 - fact_list2.reject! {|i| i == reject1}.length()
在此之上,我检查了fact_list2是一个数组,但它似乎没有任何区别。 我在这里错过了什么?
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()