编辑以前版本的问题没有准确反映我的问题我编辑过。
我想做一系列破坏性的加减法(对具有相应方法的可变对象)a
分配后:
a = [:a, :b]
以下所有操作都返回语法错误。
a -= [:b] += [:c]
(a -= [:b]) += [:c]
a.-=([:b]).+=([:c])
有没有正确的方法,或者这样做没有意义?
最佳答案
首先
a = [:a, :b]
a -= [:a]
不是破坏性操作。它真正的意思是
a = a - [:a]
如果你真的想连锁破坏性操作,你可以,但你可能需要建立自己的方法在现有破坏性方法的基础上:
class Array
def my_delete(e)
delete(e)
self
end
end
[:a, :b].my_delete(:b).concat([:c])