我正在编写以下代码:
我正在编写以下代码:
[1,2,3,4,5].inject([]) do |res, a|
res << a*a and next if a == 2
res << a
end
它会显示以下错误:
NoMethodError: undefined method `<<' for nil:NilClass
当使用next
时,会将变量res
置为nil
,如何解决这个问题呢?
我尝试了各种方法,但无法让next
与Ruby配合使用。我知道我提供的这个片段可以在没有next
的情况下完成(a == 4 ? res << a*a : res << a
),但在我的实际用例中,我有一些复杂的逻辑,不能这样简单地完成。
map
确实是最好、最快的方法,但inject
和each_with_object
也可以使用。 - the Tin Mannext
可能有效,但它是否是解决方案的适当编码方式呢?不是的。相反,我们应该指导和教育,让其他人学习并传授正确的技术。我们需要教别人如何钓鱼,而不是给他们鱼。 - the Tin Man