ruby - 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 中的错字——忘记显式返回。)
解决方案
Ruby 不支持多个返回值。它只是返回列表的语法糖。因此,以下工作。
@bar ||= foo[0]
推荐阅读
- inheritance - Entity Framework Core 自引用和继承
- django - 从 Django 休息框架中的选择字段中获取数据
- r - 在不保留标签顺序的情况下堆叠条形图
- apache-spark - 根据列表的匹配值过滤DataFrame中的行
- angular - Override service provided in NgModule in a web component
- python - How to insert missing date time value while resampling frequencies more efficient?
- javascript - Add HTML tags dynamically using JSX
- postgresql - Postgres CloudSQL 实例中的 RAM 使用率低?
- pandas - 如何将 Pandas.Series.str.extractall() 结果分配回原始数据集?(TypeError:插入列的索引与框架索引不兼容)
- python - Bash 不会将输出重定向到文件并在后台运行