[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:000088] Re: gtrb & multi-D array
ごとけんです
In message "[dennou-ruby:000087] Re: gtrb & multi-D array"
on 99/09/06, Takeshi Horinouchi <horinout@xxxxxx> writes:
>負のインデックスが使えると、配列が前からも後ろからも対等にアクセ
>スできるのが嬉しい。一方、差分を取ったりということから考えると、
>i=0 で x[i-1] が nil 等にならないとバグの温床になるかもしれない。
>
>私としては、前者を重視して負のインッデクスが欲しいに一票。また、
>rubyに組込みの配列クラス Array の負のインッデクス解釈と同じにな
>るので、変えない方がユーザーの混乱が減るし、すっきりするとも思い
>ます。
僕もそう思います。相対インデックスによるアクセス方があるとい
いのかも知れませんね。
>>> 我々の用途としては,可能なかぎり nil に対する演算を再定義して,
>>> nil に対してどんな演算をしてもいいけれど(エラーにはならない),
>>> 結果は必ず nil というようにしといたほうがいいでしょう.
>
>場合によっては、変な救済策をせずエラーにさせるのがバグを避けるた
>めにもいいのでは。具体的な問題に即して考ることにしましょう。
僕も nil は基本的に暗黙の型変換をしない方がよいと思います。
ただ、
>>> それとも,Ruby の nil と,我々の用途としての
>>> nil (undef あるいは NaN) は区別しておいたほうがいいでしょうかね?
>
>それって、配列インデックスがいけない値だったら nil でなく、別の
>を返すとかですか? 本当に必要でない限り避けたい様な気がします。
これについてはちょっと悩む所で、undef や NaN に相当するモノ
はあった方がよいやも知れません。ただ undef は予約語なので、
名前を変える必要があります。また NaN は Float のオブジェクト
として存在します。リテラルはありませんが、1.0/0*0 で作れます。
class Numeric
class UndefinedValue
end
Undef = UndefinedValue.new
def udef
Undef
end
end
-- gotoken