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

[dennou-ruby:000154] Re: reading binary files



高橋です。

>返り値が複数なら,
>  uxmin, uxmax, uymin, uymax = Dcl.sgqwnd()  # 現在のウインドウ情報を得る
>が基本になります.f90 ではこのようなこと
>(配列を返す関数の値を展開した形で得る)はできましたっけ?
>できないとすれば,f90 の(上位)インターフェースとは形が
>変わってしまいます.

できないと思います。少なくとも f90 のインターフェイスは
そうはなっていません(subroutine DclGetWindow(xmin, xmax, ymin, ymax) の
ような書き方をしています)。 

>Ruby は Ruby,違っていてもいいじゃない,というのなら,

そう思います。その言語の文脈で綺麗に書けていれば良いかと。

>dev = DclDevice.new('X')
>dev.newframe
>
>win = DclWindow.new(0.0, 1.0, -0.7, 0.7)
>vpt = DclViewport.new(0.2, 0.8,  0.2, 0.6)
>fig = DclFig.new(win,vpt,'linear')
>
>fig.AxisTitle('X-AXIS', ' ', 'Y1-AXIS', ' ')
>fig.DrawAxis
>
>txt = DclText.new('PAGE:1, FRAME:1', 0.02, 0, 0, 3)
>txt.Show
>
>とかいうように(詳細はともかく)やってしまうとカッコイイのでしょうが,
>こういうのは,のちのちさらなるラッパとして考える,ということで
>よいかと思います.

さらなるラッパ、というよりはこういう書きかたが早くしたい、
というのが本音です。が、沼口さんの書き方だとなんだかちっとも
データがオブジェクト化されていないように見えます。

内部では細かくクラス分けされていても良いかもしれませんが、
毎日のプログラミング段階では、お絵描き部分(デバイス選択から
実際の描画まで)を扱うオブジェクトは、「ひとつだけ」でかつ
「データを含んでいるもの」、であって欲しいです。

こんな感じですか

a = DclData.new("~/data/hogehoge.nc")
b = DclData.new("~/data/hogehome.nc")

c = a + b

c.OpenDevice('X')

c.DrawContour	# すべてデータ内のデフォルト値で描画

----------------
京大理気象M2 高橋憲義