Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何进行连续的破坏性加法/减法?_Ruby_Arrays_Ruby 1.9 - Fatal编程技术网

Ruby 如何进行连续的破坏性加法/减法?

Ruby 如何进行连续的破坏性加法/减法?,ruby,arrays,ruby-1.9,Ruby,Arrays,Ruby 1.9,编辑问题的上一版本没有准确反映我的问题。我编辑了它 我想做一系列破坏性的加法/减法(对具有相应方法的可变对象)。之后,由以下人员分配一个: a = [:a, :b] 以下所有操作都返回语法错误 a -= [:b] += [:c] (a -= [:b]) += [:c] a.-=([:b]).+=([:c]) 有没有正确的方法,或者这样做没有意义?您不能指定数组文字,例如,[:b]+=[:c]是语法错误,就像[:b]=[:c]是语法错误一样。左侧必须是变量名,或将被重写为方法调用的内容(例如[

编辑问题的上一版本没有准确反映我的问题。我编辑了它

我想做一系列破坏性的加法/减法(对具有相应方法的可变对象)。
之后,由以下人员分配一个

a = [:a, :b]
以下所有操作都返回语法错误

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

有没有正确的方法,或者这样做没有意义?

您不能指定数组文字,例如,
[:b]+=[:c]
是语法错误,就像
[: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])

“我甚至不明白你想达到什么目的。”西奥我编辑了我的问题。你现在明白了吗?