Sau*_*abh 8 ruby ruby-on-rails
我写的代码如下:
[1,2,3,4,5].inject([]) do |res, a|
res << a*a and next if a == 2
res << a
end
Run Code Online (Sandbox Code Playgroud)
它给出以下错误:
NoMethodError: undefined method `<<' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
如下所示它res变量为nil,如何解决这个问题?
我尝试了各种各样的方法,但无法接下来使用ruby,我知道我提供的这个片段可以在没有next(a == 4 ? res << a*a : res << a)的情况下完成,但在我的实际用例中我有一些复杂的逻辑而且不能简单地完成.
Aru*_*hit 13
更换
res << a*a and next if a == 2
Run Code Online (Sandbox Code Playgroud)
同
next res << a*a if a == 2
Run Code Online (Sandbox Code Playgroud)
现在,它会工作.
示例: -
#!/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]
Run Code Online (Sandbox Code Playgroud)
next可以取一个值,这将是块当前迭代返回的值....
| 归档时间: |
|
| 查看次数: |
2726 次 |
| 最近记录: |