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

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



沼口です.
	
 > ということです。たぶん数列と範囲を表現するクラスがそれぞれあった方がよ
 > いと思いますがどうでしょう、一般的すぎる??

それぞれを別に設ける方がいいのかどうかは,ちょっと要検討ですね.
いずれにせよ, データの添字やデータの値に使う値の集合のクラスは
きちんと作っておいたほうがよくて,少なくとも,
 最大値,最小値,間隔による指定
 値の集合による指定
 サイクリックかどうかのオプション
 順序のオプション
あたりは持っておいたほうがよいということですね.

堀之内君の悩みは,ただ,それを実際どう表すかというとで,
特にインタラクティブな処理をやりたいときに,
(添字向けの上のようなクラスを IRange として)
   a[IRange.new(1..2),IRange.new(0..1,2),IRange.new(5)]
などとやるのは絶対避けたいし,これを
   a[1..2, 0..1,2, 5] 
とは書いたら一意に解釈できないし,
   a[1..2, [0..1,2], 5]  とか    a[1..2, {0..1,2}, 5]  
とかいうのもできれば避けたい.

   a[1..2, 0..1..2, 5]  とか 
   a[1..2, 0..1:2, 5]  とか 書けるといいな,
   ということだと思うのです.

インタラクティブな処理ではタイプを減らしたいのと,
間隔指定がある場合とない場合とで指定の仕方が違うのは面倒,ということで.
つまり上の例だと,  " a[1..2, 0..1 " まで書いたところで,おっと,
間隔を指定するんだったら前にカッコを入れなきゃいけない,
とカーソルを戻さなければいけないところがいまひとつ使いにくそう.

   a[1..2, 0..1=>2, 5]  とか 書ければまだいいのですが,
   パーサエラーになってしまいますよね.
   a[1..2, 5, 0..1=>2]  なら通るのだけど.

つまりパーサレベルの話で悩んでいるわけで,なにかうまくだます方法
ないですか,ということなのですが.何かいい方法ありませんかね.

-- 
沼口  敦@北海道大学大学院地球環境科学研究科 大気海洋圏環境科学専攻
tel:011-706-2365 fax:011-706-4865 〒060-0810 札幌市北区北10条西5丁目  
numa@xxxxxx