编辑以前版本的问题没有准确反映我的问题我编辑过。
我想做一系列破坏性的加减法(对具有相应方法的可变对象)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])

10-08 04:10