这两个
代码片段有什么区别:
- def config
- @config ||= begin
- if config_exists?
- @config = return some value
- else
- {}
- end
- end
- end
和
- def config
- @config ||= method
- end
-
- def method
- if config_exists?
- return some value
- else
- {}
- end
- end
我对“开始…结束”块感到困惑.它对输出有什么影响吗?如果没有,那么在这里使用begin … end块是什么?
首先,您需要知道定义的
方法本身包含begin … end块的
功能.
在异常处理的上下文中,def method_name … end在功能上等同于begin … end.例如,两者都可以包括救援声明.
您共享的两个代码块实际上是相同的,并且在一个代码中没有任何好处……除非您的方法在多个地方需要.在这种情况下,通过将逻辑放入单个方法并从多个其他位置调用它来干掉代码.