应该是一个简单的.我想,通过阅读这篇博文,我可以在我的next命令后立即返回一些内容:
next "new value" if axis_range == "test"
我真正想做的是在同一行记录下一个原因:
next @logger.info('skipping this item because for fun') unless (elephants.size > 0)
我找不到next关于ruby doc的这种用法的任何讨论.代码肯定有效.我意识到我可以使用一个unless块来执行此操作,但该行代码非常简洁.
两个问题:
next有点奇怪而不是'ruby-ish'吗?ste*_*lag 20
"就像
return和break关键字一样,next可以单独使用,也可以后跟表达式或逗号分隔的表达式列表.当next在循环中使用时,后面的任何值都会next被忽略.但是在一个块中,表达式或表达式变为yield调用块的语句的"返回值" ." (Ruby编程语言,David Flanagan和Yukihiro Matsumoto,2008年,第150页)
这本书给出了这个例子:
squareroots = data.collect do |x|
next 0 if x < 0 # return 0 for negative values
Math.sqrt(x)
end
Run Code Online (Sandbox Code Playgroud)
而这个替代方案:
squareroots = data.collect do |x|
if (x < 0) then 0 else Math.sqrt(x) end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3498 次 |
| 最近记录: |