作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我试图理解什么时候应该隐式或显式地编写代码块。给定以下代码块:
隐式
def two_times_implicit
return "No block" unless block_given?
yield
yield
end
puts two_times_implicit { print "Hello "}
puts two_times_implicit
明确
def two_times_explicit (&i_am_a_block)
return "No block" if i_am_a_block.nil?
i_am_a_block.call
i_am_a_block.call
end
puts two_times_explicit { puts "Hello"}
puts two_times_explicit
使用一种编码比另一种更可取吗?是否存在标准做法?是否存在其中一个比另一个工作得更好或不同以及一个根本不起作用的实例?
最佳答案
通过&
接收 block 会在 block 外创建一个新的proc对象,所以从效率的角度来说,最好不要使用。但是,使用 &
通常可以更轻松地定义可能使用或不使用 block 的方法,并且使用 &
,您还可以将 block 与参数一起处理,因此它是许多人的首选。
关于ruby - 何时使用隐式或显式代码块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32720002/
我是一名优秀的程序员,十分优秀!