Ruby 中具有多个 return 值的函数的条件赋值?

Conditional assignment from a function with multiple return values in Ruby?

有没有办法使用条件赋值运算符 (||=) 从具有多个值的函数中分配特定值?

例如,我经常看到这种模式:

def foo
  'hello'
end

def bar
  @bar ||= foo
end

如果 foo return 是单个值,这将非常有用。如果 foo return 有两个值,而我只想将 bar 分配给第一个值呢?

def foo
  return 'hello', 'world'
end

def bar
  @bar ||= foo
end

# How to set bar = 'hello' ?

是否有某种方法可以有条件地仅分配给第一个值 returned?如果不是——将 bar 实例变量设置为 'hello' 的惯用方法是什么?

(已编辑:修复了第二个示例中 foo 中的拼写错误——忘记明确 return。)

Ruby 不支持多个 return 值。它只是 returning 列表的语法糖。因此,以下工作。

@bar ||= foo[0]