繁体   English   中英

有没有更好的方法从Ruby中的块中获取值?

[英]Is there a better way to get a value from a block in Ruby?

我一直在使用if yield self[x]来评估一个块是返回true还是false。 我需要使块可选,我看到yield if block_given?yield if block_given?建议yield if block_given? 我怎样才能将这两条线组合起来?

你试过这个吗?

if block_given? && yield(self[x])
  # ...
end

当没有给出块时,这种情况总是会失败,即不会对# ...任何内容进行评估。 如果您希望条件成功,如果没有给出块,请执行以下操作:

if !block_given? || yield(self[x])
  # ...
end

或者这个,虽然我觉得它更难读:

unless block_given? && !yield(self[x])
  # ...
end

尝试:

if block_given?
   if yield self[x]
      # Do something....
   end
end

您可以将条件附加到整个if块:

if yield self[x]
  # do something...
end if block_given?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM