[#30232] [patch] rb_type(): シンボル型に対する型判定が怪しい — "Yoshinori Sano" <yoshinori.sano@...>
さの よしのり です。
6 messages
2007/02/01
[#30241] 質問: 関数風メソッド呼び出しのYARV命令列について — "Yoshinori Sano" <yoshinori.sano@...>
さの よしのり です
7 messages
2007/02/01
[#30259] getinstancevariable2 — SASADA Koichi <ko1@...>
ささだです。
5 messages
2007/02/05
[#30263] exception on Singleton — SASADA Koichi <ko1@...>
ささだです。
10 messages
2007/02/05
[#30273] Re: exception on Singleton
— SASADA Koichi <ko1@...>
2007/02/05
ささだです.
[#30332] Re: exception on Singleton
— SASADA Koichi <ko1@...>
2007/02/14
ささだです。
[#30284] Re: 1.8.5 release on 3/3 — Urabe Shyouhei <shyouhei@...>
卜部です。1.8.5も3/3に同時リリースするといいと思いました。
14 messages
2007/02/06
[#30293] Re: 1.8.5 release on 3/3
— Shugo Maeda <shugo@...>
2007/02/06
前田です。
[#30307] Re: [ruby-cvs:18927] Ruby:r11679: * ext/thread: Make style fixes (mostly de-K&R'ism) to match the — Nobuyoshi Nakada <nobu@...>
なかだです。
8 messages
2007/02/09
[#30312] Re: [ruby-cvs:18927] Ruby:r11679: * ext/thread: Make style fixes (mostly de-K&R'ism) to match the
— "Akinori MUSHA" <knu@...>
2007/02/10
At Sat, 10 Feb 2007 00:00:44 +0900,
[#30321] [ruby_1_8] can't grub Digest::SHAxxx on powerpc-darwin — Tadashi Saito <shiba@...2.accsnet.ne.jp>
こんばんは。斎藤と申します。
5 messages
2007/02/11
[#30328] Re: [ruby-cvs:18955] Ruby:r11707: * ext/win32ole/win32ole.c (ole_variant2val): support VT_I8, VT_UI8. — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
3 messages
2007/02/13
[#30338] backporting URI to ruby_1_8 — "Akinori MUSHA" <knu@...>
lib/uri を trunk から ruby_1_8 にマージします。
7 messages
2007/02/14
[#30362] Re: class local instance variable — "Park Ji-In" <tisphie@...>
44GT44KT44Gw44KT44Gv44CC5py0IOiKneWNsCDjgajnlLPjgZfjgb7jgZnjgIIKCuWIneOCgeOB
5 messages
2007/02/16
[#30373] Ruby 1.8.6 preview1 has been released — "Akinori MUSHA" <knu@...>
Ruby 1.8.6 preview1 をリリースしました。
5 messages
2007/02/17
[#30396] unsupported: th_call0 in 1.9 — "KUBO Takehiro" <kubo@...>
久保です。
5 messages
2007/02/21
[#30404] ruby-1.8 で SEGV — Tomoyuki Chikanaga <chikanag@...>
日本コントロールシステム(株)の近永と申します。
6 messages
2007/02/24
[#30433] Re: ruby-1.8 で SEGV
— Chikanaga Tomoyuki <chikanag@...>
2007/02/26
日本コントロールシステム(株)の近永と申します。
[#30407] Arrayのメソッド増強について — Minero Aoki <aamine@...>
青木です。
7 messages
2007/02/24
[#30408] Ruby 1.8.6 preview2 has been released — "Akinori MUSHA" <knu@...>
Ruby 1.8.6 preview2 をリリースしました。
20 messages
2007/02/24
[#30414] fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released)
— Hidetoshi NAGAI <nagai@...>
2007/02/25
永井@知能.九工大です.
[#30418] Re: fail to autoload at $SAFE==4 (Re: Ruby 1.8.6 preview2 has been released)
— Nobuyoshi Nakada <nobu@...>
2007/02/25
なかだです。
[#30419] Re: fail to autoload at $SAFE==4
— Hidetoshi NAGAI <nagai@...>
2007/02/25
永井@知能.九工大です.
[#30434] Re: fail to autoload at $SAFE==4
— Nobuyoshi Nakada <nobu@...>
2007/02/27
なかだです。
[#30435] Re: fail to autoload at $SAFE==4
— Hidetoshi NAGAI <nagai@...>
2007/02/27
永井@知能.九工大です.
[#30437] Re: fail to autoload at $SAFE==4
— "Nobuyoshi Nakada" <nobu@...>
2007/02/27
なかだです。
[#30412] fastthreadについて — Shugo Maeda <shugo@...>
前田です。
9 messages
2007/02/25
[#30439] Re: MIME decoding confused by non-MIME characters — Urabe Shyouhei <shyouhei@...>
-devに振ってみる。
9 messages
2007/02/27
[#30440] Re: MIME decoding confused by non-MIME characters
— "H.Holon" <holon@...>
2007/02/27
はじめてこちらには postします。相馬と申します。
[#30441] Re: MIME decoding confused by non-MIME characters
— "H.Holon" <holon@...>
2007/02/27
相馬です。
[#30445] Re: MIME decoding confused by non-MIME characters
— "H.Holon" <holon@...>
2007/02/27
相馬です。
[ruby-dev:30399] Re: class local instance variable
From:
"Makoto Inada" <mak@...>
Date:
2007-02-22 16:32:23 UTC
List:
ruby-dev #30399
> というのも、稲田さんの期待の前提となる「そのオブジェクトのイ
> ンスタンス変数にはすべてアクセスできる」という仮定は、それそ
> のものがアクセスできる範囲を限定する(ので、名称重複があって
> も問題にならない)クラスローカルインスタンス変数の存在と矛盾
> するからです。
まさに矛盾なんです。で、私が期待しているのは結局、特異クラスだけは特別扱いをして、自身のクラスローカルインスタンス変数スコープを持たない ==
常にオブジェクトのクラスのクラスローカルインスタンス変数スコープを使う == ようにしてはどうだろう、ということです。
「特異クラス」ということで、特異メソッドと instance_eval
のケースの両方を含んでいますので、まつもとさんの話の前提である、「メソッドの所属するクラスをクラスローカルインスタンス変数の所属先とする」と対立してしまうわけですが。
この案(?) によると、変数の所属クラスは下のようになります。
class Foo
def foo
@_foo # (1) Foo
end
def self.foo_c1
@_foo # (2) Class
end
end
class <<Foo
def foo_c2
@_foo # (3) Class
end
end
def Foo.foo_c3
@_foo # (4) Class
end
foo = Foo.new
def foo.foo_i1
@_foo # (5) Foo
end
class <<foo
def.foo_i2
@_foo # (6) Foo
end
end
foo.instance_eval {
def foo_i3
@_foo # (7) Foo
end
}
同じことの繰り返しになりますが、私にとって特異メソッドというのは 1. 既存のオブジェクトに後からメソッドを付け足せる、2.
クラスで定義されているメソッドと比べて何の制限もない、という点で、とてつもなく便利なわけです。
これが、クラスローカルインスタンス変数の導入と暗黙の(*)
特異クラスのおかげで、2番目のメリットがなくなってしまうのが、惜しい。どうせ内部で暗黙に作られている特異クラスなんだから、クラスローカルインスタンス変数のスコープ決定のときも、なかったことしてしまえ、という発想です。
上の例でいうと、特異メソッド foo_i[123] が Foo#foo と同じインスタンス変数 @_foo にアクセスできるのがうれしいわけです。
(*) 本当に暗黙なの?暗黙であるべきなの?というのは別に議論されていいと思います。それが eigenclass の意味することなのかもしれませんが。
もう一つ。クラスローカルインスタンス変数があるなら、クラスローカルクラス変数があってもいいような気がします。両方あるならスコーピングのルールも両方で統一されるのが、自然でしょう。
今までは、私の頭がごちゃごちゃになるのでクラス変数の方は考えないようにしてきましたが、クラス変数まで考えると、案外見落としていることがあるかもしれません。今後はこちらも含めて考えてみようかと思っています。
まとまりありませんが、この辺で。
稲田
On 2/21/07, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
>
> まつもと ゆきひろです
>
> ちょっと考えたんですが、まだ納得できる結論が出ていません。
>
> In message "Re: [ruby-dev:30382] Re: class local instance variable"
> on Sun, 18 Feb 2007 12:23:18 +0900, "Makoto Inada" <mak@robustatech.com>
> writes:
>
> |> でも、ここではMerongクラスのローカルインスタンス変数にアクセスできるというのが一般的な期待なんでしょうか。
> |
> |私はそう期待します。プログラムを書いていて instance_eval
> |を使うときは大抵、既に存在するオブジェクトを直接操作/参照するつもりで書いているので、
> |
> |1. 特異クラスの存在を(たとえ知っていても)意識していない、
> |2. そのオブジェクトのインスタンス変数にはすべてアクセスできると思ってしまう、
> |
> |というふうに考えています。
>
> まず、1についてですが、instance_evalでのターゲットとなるクラ
> スが特異クラスでないとまずい局面は確かにあります。たとえば
> instance_evalの中でメソッド定義を行った場合、やはり、そのオ
> ブジェクトのクラスにメソッドが定義されるのではなく、そのオブ
> ジェクトに特異メソッドが定義されるべきでしょう。
>
> で、クラスローカルインスタンス変数の対象がどうあるべきかとい
> うのは、現時点では私にはよくわかりません。
>
> というのも、稲田さんの期待の前提となる「そのオブジェクトのイ
> ンスタンス変数にはすべてアクセスできる」という仮定は、それそ
> のものがアクセスできる範囲を限定する(ので、名称重複があって
> も問題にならない)クラスローカルインスタンス変数の存在と矛盾
> するからです。それぞれのメソッドはその所属するクラスというも
> のが存在していて、それをクラスローカルインスタンス変数の所属
> 先として問題ないのですが、instance_evalでのクラスローカル変
> 数の所属先を、そのオブジェクトの特異クラスにするのか、そのオ
> ブジェクトのクラスにするのかは悩ましいところです。
>
> instance_evalの(クラスローカルインスタンス変数の)ターゲット
> を、そのオブジェクトのクラスにするのは(やや実装が面倒なもの
> の)不可能ではないのですが、それにどれだけ意味があるのかよく
> わからないと言うのが正直なところです。
>
> 以下の各箇所でのクラスローカルインスタンス変数はどのクラスに
> 所属すべきだと思いますか?
>
> class Foo
> def foo
> @_foo # (1)
> end
> def self.foo_c1
> @_foo # (2)
> end
> end
>
> class <<Foo
> def foo_c2
> @_foo # (3)
> end
> end
>
> def Foo.foo_c3
> @_foo # (4)
> end
>
> foo = Foo.new
>
> def foo.foo_i1
> @_foo # (5)
> end
>
> class <<foo
> def.foo_i2
> @_foo # (6)
> end
> end
>
> foo.instance_eval {
> def foo_i3
> @_foo # (7)
> end
> }
>
> まつもと ゆきひろ /:|)
>
>