[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:000108] Re: NMDArray revised
In message "[dennou-ruby:000107] Re: NMDArray revised"
on 99/10/05, Takeshi Horinouchi <horinout@xxxxxx> writes:
>>> 意味がわからないのですが、これって、a,b が配列だとするとRubyでは
>>>
>>> c = []
>>> a.each_indeces{|i| c[i] = a[i] * b[i] if a[i] > 0}
>>> a = c
>>>
>>> みたいな感じですか??
>
>そうです。
>そうか、インデックスを対象に同様のメソッドを作ればいいんですね。
ただ、上の例ですらブロック内に [i] が4回も出てくるというわず
らわしさはあります。例えば、引数のnilなところをselfで上書き
するメソッドover を定義して、
a
==> [1.2, -3.4, 56.7, -0.9]
a.mask{|elm| elm > 0}
==> [1.2, nil, 56.7, nil]
2*a
==> [2.4, -6.8, 113.4, -1.8]
a = (2*a).over a.mask{|e| e > 0}
==> [1.2, -6.8, 56.7, -1.8]
みたいな手もあるかも知れません。a*b なら
a = (a*b).over a.mask{|e| e>0}
分かりにくいですか?? ただこれだと余分な計算が多いんですよね。
-- gotoken