【问题标题】:Conditional assignment from a function with multiple return values in Ruby?Ruby中具有多个返回值的函数的条件赋值?
【发布时间】:2021-04-20 02:24:20
【问题描述】:

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

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

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 中的错字——忘记显式返回。)

【问题讨论】:

  • "如果 foo 返回两个值怎么办" 它没有。请参阅stackoverflow.com/questions/28725500/… 以了解您自己的代码。
  • @bar ||= foo.first
  • @matt 感谢您发现这个错字 -- 已编辑更正。

标签: ruby list methods variable-assignment


【解决方案1】:

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

@bar ||= foo[0]

【讨论】:

  • 您的意思是“返回Array 的语法糖吗?” Ruby 中没有“列表”之类的东西。
猜你喜欢
  • 2021-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
相关资源
最近更新 更多