[#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:3419] Re: meta programming features
まつもと ゆきひろです
In message "[ruby-list:3415] Re: meta programming features"
on 97/07/23, 石塚圭樹 <keiju@bc.mbn.or.jp> writes:
|けいじゅ@今はフリー(^^;;;です.
|>例示された中では ingredients くらいならなんか伝わる気がしま
|>すけど.
|
|やっぱ, flavors ですかねえ...
ですかねえ.もうちょっとかんがえましょう.
|>これでも外側のスコープでaがローカル変数として代入されている
|>場合とそうでない場合で挙動が違ってしまいます.
|
|そうなんだ,
|
| a = "Foo"
| proc{|a| a = "Bar"}.call
| print a
|=======================
| Foo
|
|となるという意味?
ちゃいます.この場合 a は(イテレータブロックの外で代入されて
いるので)常に静的ローカル変数です.ですから,この結果は
=======================
Bar
です.動的ローカル変数とは「イテレータブロックの中で最初に代
入された変数」のことです.
|>|a = "Foo"
|>|eval "|a| A = a", Foo.class_binding, a
|>
|>evalじゃない別のものになってしまいますけど,これはこれで意味
|>があるのかなあ.
|
|別のものですか...
evalに渡す文字列はrubyプログラムですが,"|a| A = a"は完全な
rubyプログラムではありませんから.たとえば,
ruby -ce "|a| A = a"
してみれば分かると思いますが.
|うーん. なるほど... ところで, バインディングってどんなオブジェクトなん
|です?
構造はProcと同じです.ちなみにProcをbindingとして渡しても動
作します.Procはイテレータがスタック上に持っている情報をオブ
ジェクト化したもので,だいたい以下のようなものを持っています.
* 静的ローカル変数フレーム
* 動的ローカル変数フレーム
* self
* 現在のclass(定数・メソッドの定義先)
* そのほか付加的な値
|そうすると, 考えられるAPIとしては:
|
| Module#モジュール定義
Module#newが使えるようになります.
| Module#クラス定義
Class#newが使えるようになります.
| Module#定数定義
Module#set_constant(name, value)にしましょう.
| Module#メソッド定義
名前はModule#define_methodで良いと思うのですが,どういう
APIにしましょうか?
Foo.define_method("foo") do |arg|
..
end
なんてのも変な気がしますが
Foo.define_method("foo", "arg", "...")
よりはましな気がします("..."はメソッドの定義部).
| Module#alias
Module#alias_method(new, old)にしましょう.
| Module#undef
Module#undef_method(name)にしましょう.
|ぐらいですか. あと, Module/Class 関係のメソッドでprivateなメソッドがあ
|りますが, それをpublicにする必要がありますね.
public,private,module_functionなどですか? うーん,そうした
方が良いのでしょうか.せっかくprivateになっているのになあ,
という気もしますが.…仕方ないか.
まつもと ゆきひろ /:|)