[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[dennou-ruby:001877] Re: alias put for GPhys
- To: horinout@xxxxxxxxxxxxxxxxxx
- Subject: [dennou-ruby:001877] Re: alias put for GPhys
- From: tsukahara daisuke <daktu32@xxxxxxxxxxxxxxxxxxxx>
- Date: Mon, 13 Sep 2004 11:04:42 +0900 (JST)
- Cc: dennou-ruby@xxxxxxxxxxx
堀之内様
Cc: dennou-ruby
塚原です. ご迷惑おかけしております. gphys というより ruby 自体の文法に
関する質問になってしまいました. 申し訳ありません.
> alias を
>
> require "numru/gphys"
> というか
> require "numru/ggraph"
> の前にすればうまく行きませんか。
試してみましたが, 上手く行きません. 以下のように変更して実行してみると
put だけでなく get も alias されないようです.
===================================
require "numru/netcdf_miss"
module NumRu
class NetCDFVar
def get_with_miss_and_scaling_new(*args)
p "get_with_miss_and_scaling_new"
get_with_miss_and_scaling(*args)
end
def put_with_miss_and_scaling_new(*args)
p "put_with_miss_and_scaling_new"
put_with_miss_and_scaling(*args)
end
alias get get_with_miss_and_scaling_new
alias put put_with_miss_and_scaling_new
end
end
require "numru/gphys"
include NumRu
p "test1: save NetCDF with GPhys::IO.write"
...
====================================
> aliasは名前ベースというよりは、関数のポインターベースのようなものだと
> 思ってください。gphys の中で alias した時点で何を呼ぶかが確定し、しかも
> それがバッファリングを考慮した特異メソッドになっているため、
> 後から変更できません。
勉強になります. なんとなくそんな気がしてましたが, ライブラリを require して
からでないと alias が有効でない, という勘違いをしていていました. 失礼しまし
た. ruby 自身をもっと知らないとだめですね...
--------------------------------------
北海道大学院理学研究科 地球惑星科学専攻
地球流体力学研究室 M2 塚原大輔
email::daktu32@xxxxxxxxxxxxxxxxxxxx
--------------------------------------
> 塚原さま
>
> 堀之内です。
>
> alias を
>
> require "numru/gphys"
> というか
> require "numru/ggraph"
> の前にすればうまく行きませんか。
>
> aliasは名前ベースというよりは、関数のポインターベースのようなものだと
> 思ってください。gphys の中で alias した時点で何を呼ぶかが確定し、しかも
> それがバッファリングを考慮した特異メソッドになっているため、
> 後から変更できません。
>
> > 塚原です. GPhys 内部の put の挙動を alias を用いて変更したいのですが
> > 上手くいきません. 具体的には, signature 下方に記述したプログラム
> > (testalias.rb) を実行すると, GPhys::IO.write 中で呼んでいる get は
> > aliasしたメソッドが呼ばれるのですが put についてはなぜか alias が張れ
> > てない or 別のメソッドを GPhys 内部で上書き alias しているようです(test1).
> >
> > 一方, NetCDF::put を直接呼び出している部分は正しく alias されているよ
> > うです(test2). お手数ですが, 確認いただけないでしょうか? テストに使用
> > した nc ファイルは適当なもので大丈夫です. GPhys オブジェクトとして読み
> > 込んで, 1.1 倍したものをファイルに保存するだけ.
>
>
>