最近、私はtap
を使用して、新しい変数に値を "ドリリング"することができることを発見しました。例えば、作成し、このようなアレイを充填する:Ruby 'tap'メソッド - 内部割り当て
array = [].tap { |ary| ary << 5 if something }
truthyあるarray
something
場合に5
をプッシュするこのコードとそうでない場合、array
は空のままです。
しかし、私はこのコードを実行した後に理由を理解していない:
array = [].tap { |ary| ary += [5] if something }
array
は空のまま。誰でも助けてくれますか?
ADD: 'a + = b'は' a = a + b'のように動作します - ここでは新しいオブジェクトを作成する事がより明らかです。 – Nakilon
@Nakilon:OPが明示的に割り当てについて話していたことを考えると、その部分が彼にはっきりとしていると仮定しました。 – sepp2k
私は理解したと思います。それは割り当て操作のbeacuseを動作しません。
array = [].tap { |ary| [5].each{ |v| ary << 5 } }
---あなたのコメントに書式を追加するにはどうすればいいですか? – mdesantis