首页 > 解决方案 > Ruby中具有多个返回值的函数的条件赋值?

问题描述

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

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

def foo
  'hello'
end

def bar
  @bar ||= foo
end

如果foo返回单个值,这很有效。如果 foo 返回两个值,而我只想将 bar 分配给第一个值呢?

def foo
  return 'hello', 'world'
end

def bar
  @bar ||= foo
end

# How to set bar = 'hello' ?

有没有办法有条件地只分配给返回的第一个值?如果不是 - 将bar实例变量设置为“hello”的惯用方式是什么?

(已编辑:在第二个示例中修复了 foo 中的错字——忘记显式返回。)

标签: rubylistmethodsvariable-assignment

解决方案


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

@bar ||= foo[0]

推荐阅读