私は次のものを持っています:
foo ||= []
foo << "bar"
そして、これは1行で実行できると確信していますが、方法がわかりません。
重要なのは、foo が存在する場合と存在しない場合があることです。存在する場合は常に配列です。存在しない場合は、配列になり、変数を追加する必要があります。
このような:
(foo ||= []) << "bar"
括弧で囲まれたビットはfoo
、すでに存在する場合は返され、存在しない場合は作成さ<<
れてから追加されます。
が定義されていない場合にのみ追加する"bar"
場合:foo
foo ||= ["bar"]
すでに存在する"bar"
かどうかに関係なく追加する場合:foo
(defined? foo) ? foo << "bar" : foo = ["bar"]
ただし、後者の場合は、個人的には元のコードの書き方の方が好きです。確かに 1 行で実行できますが、2 行の実装の方が読みやすいと思います。
ローカル変数が存在するかどうかわからない場合、どのコードを書いていますか?
それが何かのようなものなら
def procedural_method(array)
result ||= []
array.each do |array_item|
result << bar(array_item)
end
result
end
次に、より機能的なプログラミングアプローチを試すことができます
def functional_programming_method(array)
array.map do |array_item|
bar(array_item)
end
end