[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:001283] Re: && and || of NArray
堀之内です。
田中さんはこのメールに参加されてません
(ので私が回答します)。
> NArrayで && と || の挙動がおかしいと思われるので報告します。
実はおかしくないんです。
> %cat test.rb
> require "narray"
> x = NArray.float(3).indgen
> y = NArray.float(3).indgen
> x = x>=2
> y = y>=1
> p x
> p y
> p x&&y
> p x||y
> 期待するのは
> && -> [0,0,1]
> || -> [0,1,1]
> だと思います。
&&, || は Ruby の定義のまんまです。よって、
x && y は、x が false/nil であれば x を, なければ y を返します。また、
x || y は、x が false/nil であれば y を, なければ x を返します。
これで、x や y が true または false であるときは、&&, || として
期待される働きをすることはわかりますね。これは再定義しないほうが
いい。
西澤君のやりたいことは、&&, || でなく &, | でやります。
またはメソッド and, or を使う。
irb(main):009:0> p x&y
NArray.byte(3):
[ 0, 0, 1 ]
irb(main):007:0> p x.and(y)
NArray.byte(3):
[ 0, 0, 1 ]
堀之内 武 horinout@xxxxxx
京都大学宙空電波科学研究センター phone:0774-38-3812
611-0011 宇治市五ヶ庄 fax:0774-31-8463