田中@ISASです。

In message: <<[ruby-math:00236] new obj at coercing>>
>>> gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro) wrote:

> 数値配列なんですけど、coercing で悩みがあります。
> 
> def coerce(other)
>   if other.type == self.type
>     return [self, other]
>   elsif other.is_a? Numeric
>     return [NumArray.new(self.size, other), self]
>   else
>     super
>   end
> end
> 
> みたいな感じにしてるんですけど、これだと必ずその場で捨てられ
> るオブジェクト NumArray.new(self.size, other) が作られます。

これは、要素 other を self.size 個持つ配列を作るのですよね?
代替案として、ここでは NumArray.new(other) で 1要素の配列を
作っておき、addなどの中で 1要素+多要素の演算ができるように
する、というのはいかがでしょうか。

田中昌宏