将项添加到Ruby中的数组,即使该变量不存在

ber*_*kes 15 ruby arrays shorthand

我有以下内容:

foo ||= []
foo << "bar"
Run Code Online (Sandbox Code Playgroud)

而且我相信这可以在一行中完成,我无法找到.

重要的是,foo可能存在,也可能不存在.如果存在则它始终是一个Array,如果它不存在,它必须成为一个数组并获得一个附加到它的变量.

gle*_*ald 45

像这样:

(foo ||= []) << "bar"
Run Code Online (Sandbox Code Playgroud)

带括号的位返回(foo如果它已经存在),或者如果它不存在则返回,然后<<附加到它.


dby*_*rne 5

如果您只想添加尚未定义的"bar"时间:foo

foo ||= ["bar"]
Run Code Online (Sandbox Code Playgroud)

如果你想添加"bar",无论是否foo已经存在:

(defined? foo) ? foo << "bar" : foo = ["bar"]
Run Code Online (Sandbox Code Playgroud)

然而,对于后一种情况,我个人更喜欢原始代码的编写方式。当然可以用一行完成,但我认为两行实现更具可读性。