2012-03-21 8 views
1

質問の以前のバージョンは、私の問題を正確に反映していませんでした。私はそれを編集した。どのようにして連続的に加算/減算を行うことができますか?

(対応するメソッドを持つ変更可能なオブジェクトに対して)一連の破壊的な加算/減算を行いたいとします。 aの後に:

a = [:a, :b] 

次のすべてが構文エラーを返します。

a -= [:b] += [:c] 
(a -= [:b]) += [:c] 
a.-=([:b]).+=([:c]) 

これを正しく行う方法はありますか、これを行うには意味がありませんか?

+0

あなたが達成しようとしていることを理解することさえできます。 – Theo

+0

@私は私の質問を編集しました。あなたは今理解していますか? – sawa

答えて

2

まず破壊操作ではありません。それは何が本当に意味することは、あなたが本当に連鎖破壊的な操作をしたい場合は

a = a - [:a] 

で、あなたがすることができますが、既存の破壊的な方法のベースに独自のメソッドを作成する必要があります。私はしません

class Array 
    def my_delete(e) 
    delete(e) 
    self 
    end 
end 

[:a, :b].my_delete(:b).concat([:c]) 
+0

私は混乱していたと思います。今、私はそれについて明確だと思う。 – sawa

1

配列リテラルに割り当てることはできません。 [:b] += [:c]は構文エラーです。ちょうど[:b] = [:c]のようになります。左側は変数名でなければならず、メソッド呼び出しとして書き換えられるものでなければなりません(例:[]=)。すべて

a = [:a, :b] 
a -= [:a] 

+0

私は自分の質問を編集しました。 – sawa

関連する問題