[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:000087] Re: gtrb & multi-D array



堀之内です。

>>  > リックな場合 nil でなくしたいと。 (サイクリックでないと a[-1] を
>>  > 使えなくしたいというのはちょっと...)
>> 
>> 気持はわかるんですが,例として,1 次元 0..10 だとして
>> サイクリックじゃないとして,
>> 
>>   del[i]=(x[i+1]-x[i-1])/2.0
>> 
>> で,i=10 のときは x[ i+1 ] が nil になって,
>> i=0 のときは x[i-1] が nil にならない,
>> というのは不自然じゃありません?

確かにそうです。何を優先するかという問題ですね。

負のインデックスが使えると、配列が前からも後ろからも対等にアクセ
スできるのが嬉しい。一方、差分を取ったりということから考えると、
i=0 で x[i-1] が nil 等にならないとバグの温床になるかもしれない。

私としては、前者を重視して負のインッデクスが欲しいに一票。また、
rubyに組込みの配列クラス Array の負のインッデクス解釈と同じにな
るので、変えない方がユーザーの混乱が減るし、すっきりするとも思い
ます。

>> 我々の用途としては,可能なかぎり nil に対する演算を再定義して, 
>> nil に対してどんな演算をしてもいいけれど(エラーにはならない),
>> 結果は必ず nil というようにしといたほうがいいでしょう.

場合によっては、変な救済策をせずエラーにさせるのがバグを避けるた
めにもいいのでは。具体的な問題に即して考ることにしましょう。

>> それとも,Ruby の nil と,我々の用途としての 
>> nil (undef あるいは NaN) は区別しておいたほうがいいでしょうかね?

それって、配列インデックスがいけない値だったら nil でなく、別の
を返すとかですか? 本当に必要でない限り避けたい様な気がします。


堀之内 武                 horinout@xxxxxx
京都大学超高層電波研究センター    611-0011 宇治市五ヶ庄
phone:0774-38-3812                     fax:0774-31-8463