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

[dennou-ruby:000649] Marshal implimentation plan



川那辺君、ごとけんさん

# ごとけんさん、なくなったと思ったemailがありました。

NumArrayもファイルへの入出力ができるように Marshal モジュールに対応する
ための _load, _dump 関数が欲しいですね。現状では要素毎に Float 等に
変換して出力するしかファイルへの出力方法がないように思います。
それを読もうと思うと一旦Arrayを作ってFLoatを一つずつ読んでいって、最後に
NumArrayに変換するということになります。さらに多次元配列にするには
改めて reshape を呼ぶ必要もありますし、そもそも元の配列の形がどうだったか
ということも別に記録しておく必要があり、大変面倒です。それに比べて
Marshalを使えば一発でもとの配列が(rubyのオブジェクトとして)復活します。
もちろん以前から言っているnetcdf等のインターフェースは要りますが、
まず Marshal への対応をすべきと思います。

オンラインマニュアルを読むと、そのためには NumArray に _dump と _load と
いうメソッドが必要であることがわかります。しかし、これをどうやって定義す
ればいいのか良くわからないので、ごとけんさん help です。実例を探そうと
思って ruby のソースdiretoryで grep _dump *.c としたのですが、marshal.c
以外ではめぼしいのが引掛りません。たとえば Float や Array ではどうなって
るのだろうと思っても、そもそも定義してなさそうです。しかし、実際には
Arrayに対してはMarshal.load でき、NumArray ではできません。どうなってる
のかわかりますか。

ひとつ気になるのが、Marshalでできるファイルのマシン間の互換性です。どうやら
Marshalではbinaryデータをテキスト化しているように思えるのですが(そうなっ
てますか?)浮動小数点や文字の表現が異なるシステムでは、出来るファイルは
異なるのでしょうか。

堀之内