在Ruby方法中使用begin来捕获错误

时间:2017-05-04 21:40:06

标签: ruby

我在某个地方看到了这个,但我真的不知道为什么你需要begin

  def some_method
    @ivar ||= begin
      if ...
        ...
      end
    end
  end

是否有助于发现错误或某种错误?它的目的是什么?

2 个答案:

答案 0 :(得分:1)

它似乎用于提供多个指令来设置@ivar。或者换句话说,提供一个代码块来设置该值。

答案 1 :(得分:1)

这个成语叫做memoization。

@foo ||= some_expression

如果@foo尚未设置,则将some_expression设置为值begin .. end

现在,在红宝石中,一切都是表达。包括<div [my-directive]="'any string...'"></div> 块。所以是的,开始/结束只是将几行代码分组到一个表达式中。