[#3305] Observable#notify_observers — shugo@... (maeda shugo)

前田です。

22 messages 1997/07/09

[#3329] meta programming features — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

44 messages 1997/07/11
[#3330] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/11

けいじゅ@今はフリー(^^;;;です.

[#3332] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/11

まつもと ゆきひろ%最終出社日です

[#3340] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/14

けいじゅ@今はフリー(^^;;;です.

[#3343] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/14

まつもと ゆきひろです

[#3345] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/14

けいじゅ@今はフリー(^^;;;です.

[#3346] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/14

まつもと ゆきひろです

[#3349] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/15

けいじゅ@今はフリー(^^;;;です.

[#3352] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/15

まつもと ゆきひろです

[#3353] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/15

けいじゅ@今はフリー(^^;;;です.

[#3357] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/15

まつもと ゆきひろです

[#3361] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/16

けいじゅ@今はフリー(^^;;;です.

[#3365] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/16

まつもと ゆきひろです

[#3366] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/16

けいじゅ@今はフリー(^^;;;です.

[#3391] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/18

まつもと ゆきひろです

[#3398] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/19

けいじゅ@今はフリー(^^;;;です.

[#3401] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/19

まつもと ゆきひろです

[#3406] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/22

けいじゅ@今はフリー(^^;;;です.

[#3410] Re: meta programming features — matz@... (Yukihiro Matsumoto) 1997/07/22

まつもと ゆきひろです

[#3415] Re: meta programming features — keiju@... (石塚圭樹 ) 1997/07/23

けいじゅ@今はフリー(^^;;;です.

[#3375] Exception — keiju@... (Keiju ISHITSUKA)

けいじゅ@今はフリー(^^;;です.

19 messages 1997/07/17
[#3383] Re: Exception — matz@... (Yukihiro Matsumoto) 1997/07/18

まつもと ゆきひろです

[#3388] Re: Exception — keiju@... (石塚圭樹 ) 1997/07/18

けいじゅ@今はフリー(^^;;;です.

[#3392] Re: Exception — matz@... (Yukihiro Matsumoto) 1997/07/18

まつもと ゆきひろです

[#3403] sorry for ruby-list trouble — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

18 messages 1997/07/22
[#3404] Re: sorry for ruby-list trouble — keiju@... (石塚圭樹 ) 1997/07/22

けいじゅ@今はフリー(^^;;;です.

[#3408] Re: sorry for ruby-list trouble — matz@... (Yukihiro Matsumoto) 1997/07/22

まつもと ゆきひろです

[#3414] Re: sorry for ruby-list trouble — keiju@... (石塚圭樹 ) 1997/07/23

けいじゅ@今はフリー(^^;;;です.

[#3420] Re: sorry for ruby-list trouble — matz@... (Yukihiro Matsumoto) 1997/07/23

まつもと ゆきひろです

[#3434] [Q] Thread — keiju@... (Keiju ISHITSUKA)

けいじゅ@今はフリー(^^;;です.

44 messages 1997/07/24
[#3444] Re: [Q] Thread — matz@... (Yukihiro Matsumoto) 1997/07/24

まつもと ゆきひろです

[#3455] Re: [Q] Thread — keiju@... (石塚圭樹 ) 1997/07/24

けいじゅ@今はフリー(^^;;;です.

[#3461] Re: [Q] Thread — matz@... (Yukihiro Matsumoto) 1997/07/25

まつもと ゆきひろです

[#3464] Re: [Q] Thread — keiju@... (石塚圭樹 ) 1997/07/25

けいじゅ@今はフリー(^^;;;です.

[#3483] Re: [Q] Thread — matz@... (Yukihiro Matsumoto) 1997/07/25

まつもと ゆきひろです

[#3528] Re: [Q] Thread — shugo@... (maeda shugo) 1997/07/28

前田です。

[#3537] Re: [Q] Thread — shugo@... (maeda shugo) 1997/07/29

前田です。

[#3542] Re: [Q] Thread — shugo@... (maeda shugo) 1997/07/30

前田です。

[ruby-list:3319] Re: meta programings [Re:exceptions (Re: Ver 1.1 [Re: Matrix])]

From: keiju@... (石塚圭樹 )
Date: 1997-07-10 08:07:34 UTC
List: ruby-list #3319
けいじゅ@今はフリー(^^;;;です. 

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 <<---

In This Thread