我正在写一些如下代码:
[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
接下来,它将
res
变量设置为nil
,如何解决此问题?我尝试了各种方法,但是无法与ruby一起使用,我知道我提供的此代码段可以不用next(
a == 4 ? res << a*a : res << a
)来完成,但是在我的实际用例中,我有一些复杂的逻辑,无法做到这一点简单地。 最佳答案
更换
res << a*a and next if a == 2
和
next res << a*a if a == 2
现在,它将起作用。
例子 :-
#!/usr/bin/env ruby
ar = [1,2,3,4,5].inject([]) do |res, a|
next res << a*a if a == 2
res << a
end
p ar
# >> [1, 4, 3, 4, 5]
Read the documentation of
next
关于ruby-on-rails - 接下来如何与 ruby 注入(inject)一起使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26831922/