Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用begininsideruby方法捕获错误_Ruby - Fatal编程技术网

使用begininsideruby方法捕获错误

使用begininsideruby方法捕获错误,ruby,Ruby,我在某个地方看到了这一点,但不知道您为什么需要begin这里: def some_method @ivar ||= begin if ... ... end end end 它是否有助于捕获错误或其他类型的错误?它的用途是什么?它似乎用于提供多个指令来设置@ivar。或者换一种说法,提供一个代码块来设置该值。它似乎用于提供多个指令来设置@ivar。或者换一种说法,提供一段代码来设置该值。这个习惯用法称为记忆化 @foo ||= s

我在某个地方看到了这一点,但不知道您为什么需要
begin
这里:

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

它是否有助于捕获错误或其他类型的错误?它的用途是什么?

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

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

这个习惯用法称为记忆化

@foo ||= some_expression
@foo
设置为
某些表达式的值(如果尚未设置)


现在,在ruby中,大多数东西都是一个表达式。包括
begin。。结束
块。所以,是的,begin/end就是把几行代码组合成一个表达式。

这个习惯用法叫做memoization

@foo ||= some_expression
@foo
设置为
某些表达式的值(如果尚未设置)


现在,在ruby中,大多数东西都是一个表达式。包括
begin。。结束
块。因此,是的,begin/end只需将几行代码组合成一个表达式。

不过,虽然它可以工作,但它可能是另一种需要更详细地编写的东西
| |=begin
很尴尬。@theTinMan:是的,我通常这样做
@foo | |=compute_foo
。但是有时候你可能不能有一个单独的方法。我理解
|124;=
但是
开始的时候是做什么的?尽管如此,当它起作用的时候,它可能是另一个应该写得更详细一点的东西
| |=begin
很尴尬。@theTinMan:是的,我通常这样做
@foo | |=compute_foo
。但是有时候你可能没有一个单独的方法。我知道
|124;=
但是
开始时是做什么的?