[#3249] ruby for mswin32 — KIMURA Koichi <kkimura@...>
[#3257] mini-reference (syntax) — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#3305] Observable#notify_observers — shugo@... (maeda shugo)
前田です。
[#3312] multi-line comment — shugo@... (maeda shugo)
前田です。
[#3329] meta programming features — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろ%最終出社日です
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
[#3350] [Q] eql? and == — keiju@... (Keiju ISHITSUKA)
けいじゅ@今はフリー(^^;;です.
[#3375] Exception — keiju@... (Keiju ISHITSUKA)
けいじゅ@今はフリー(^^;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
[#3378] ML分割 — takagi@... (TAKAGI Hiromitsu)
ところで、話は変わって、ひとつ提案です。
[#3403] sorry for ruby-list trouble — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
[#3411] no cbreak in curses module — Shoichi OZAWA <ozawa@...>
こんにちは 小澤@日立 です。
[#3417] [Bug] String#sub — shugo@... (maeda shugo)
前田です。
[#3429] [Req] println — shugo@... (maeda shugo)
前田です。
まつもと ゆきひろです
[#3434] [Q] Thread — keiju@... (Keiju ISHITSUKA)
けいじゅ@今はフリー(^^;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
けいじゅ@今はフリー(^^;;;です.
まつもと ゆきひろです
前田です。
前田です。
前田です。
けいじゅ@今はフリー(^^;;;です.
<199707301029.TAA25172@hoyogw.netlab.co.jp> の、
けいじゅ@今はフリー(^^;;;です.
<199707311103.UAA08460@hoyogw.netlab.co.jp> の、
[#3470] [Problem] for local class — keiju@... (Keiju ISHITSUKA)
けいじゅ@今はフリー(^^;;です.
[#3502] Re: .to_f result — 渡辺博文 <VYV01212@...>
わたなべです.
[ruby-list:3319] Re: meta programings [Re:exceptions (Re: Ver 1.1 [Re: Matrix])]
けいじゅ@今はフリー(^^;;;です.
In [ruby-list :03313 ] the message: "[ruby-list:3313] Re: meta
programings [Re:exceptions (Re: Ver 1.1 [Re: Matrix])] ", on Jul/10
11:06(+0200) matz@caelum.co.jp (Yukihiro Matsumoto) writes:
>|イメージが違うかも知れないっすね. 今までこの手のプログラムをやっていて
>|めんどくさいなと思った点として,
>|
>|1. あるクラスにローカルなクラスの定義
>|2. そうやって生成したクラスに対して, クラス定数, メソッドなどを定義する
>|3. メソッド定義時おける文字列操作のめんどくささ
>context-classってのは良く分かりませんが,こういうのを作って
ああ. 説明不足でしたね. これが重要で, context-classでクラスまたは
bindingを指定するとそこでローカルなクラスを生成するというものでした.
>みたんですけど,どうでしょう.
> Module.new(name)
> Class.new(name[, super])
>以下のようなプログラムが動いています.
>
> module A
> Foo = Module.new("Foo"){
> def bar
> print "bar\n"
> end
> }
> p Foo.type
>
> Bar = Class.new("Bar"){
> include Foo
> def baz
> print "baz\n"
> end
> }
> p Bar.type
> p bar = Bar.new
> bar.bar
> bar.baz
> end
なかなか使いやすそうですね. ただ, 先の context-class が指定できないの
がローカルクラスを作る時面倒です. あ. でも,
module A
...
end
の Aは, モジュールが代入された変数でもいいんですよね? つまり,
a = Foo::Bar::Baz # あるモジュール
module a
...
end
も OK? それなら問題ないかなあ...
>で,こういうの作ってみて分かったんですが,これをメソッドの中
>から呼ぶとnested method definitionといって怒られます.この辺
>をなんとかしないと使いにくいでしょうね.
そうですね.
>あと,トップレベルでは自動的にprivateになる仕様もこういう時
>には面倒でした.
なにがでしたっけ??
>定数やメソッドの定義は,イテレータブロックで行うのではなく,
>関数的なAPIにした方が良いのかも知れません.
定数はともかく, メソッド定義は関数的でないと使いづらい場合も多いと思い
ます. とくに, 動的にコードを生成する時には.
>|問題は3で, 文字列操作よりも簡単に行うには, 構文をそのままクラスとして
>|マップした何かがあればいいかなと思ったわけです. イメージとしては, リス
>|ト処理でLispのプログラムを作るイメージです. リスト処理に相当する元とし
>|て構文処理かなと...
>|# でも, そこまでしなくても良いかなあ...
>lispじゃないんだから….
ですねえ....
ここまで話しが進んだので, 他のAPIのリクエストも出しましょう.
Module#def_method(name, source)
メソッドを定義する.
Module#class_variables
クラス変数の一覧
Module#class_variable_value(name)
クラス変数の値
Module#class_variable_value(name, value)
クラス変数の値を設定する
(Module#instance_variables
インスタンス変数の一覧. 必要か?)
Module#methods
メソッドと(private/public)の組みの一覧を返す.
Module#includes
インクルードモジュールの一覧を返す.
Object#instance_variables
インスタンス変数の一覧
Object#instance_variable_value(name)
インスタンス変数の値
Object#instance_variable_value(name, value)
インスタンス変数の値を設定する
Object#methods
メソッドと(private/public)の組みの一覧を返す.
Object#extends
エクステンドモジュールの一覧を返す.
とりあえずこれだけあれば, クラス/オブジェクトの素性は分かるようになり,
かつ操作ができるようになり思います.
# あと, undef系があるかな...
あと, 松本氏はいやがるかも知れませんが,
Module#methods_sources
メソッドと(private/public)とソースコードの組みの一覧を返す.
Object#methods_source
メソッドと(private/public)とソースコードの組みの一覧を返す.
があるかな.
あと, APIとしては, Object#instance_variables ではインスタンス変数を表
す特別なオブジェクトを返す方法もありますね. そうすると,
Object#instance_variable_valueはいらなくなって,
InstanceVariable#value みたいなメソッドが必要になりますね(私個人として
は, こっちのインターフェイスの方が好きなのですが...). あと, イテレータ
とする方法もあるかな?
object.instance_variables do
|name, access, value|
...
end
イテレータにすると値まで取り出せるわけですね.
__
.........................................石塚 圭樹@今はフリー(^^;;...
------->>また, アドレス変わりました!! e-mail: keiju@bc.mbn.or.jp <<---