Bug #4971
closed
Added by shugo (Shugo Maeda) about 13 years ago.
Updated almost 12 years ago.
Description
Ruby 1.9だとModule#class_variablesはスーパークラスのクラス変数を返しませんが、仕様でしょうか?
class Foo
@@foo = 123
end
class Bar < Foo
@@bar = 456
end
p Bar.class_variables #=> 1.8では["@@bar", "@@foo"], 1.9では[:@@bar]
commit logには
* variable.c (rb_mod_class_variables): class variables are no longer
inherited. [ruby-dev:23808]
と書いてあるのですが、当時のクラス変数の仕様って今の1.8とも1.9とも違う
仕様だったりするでしょうか。
Bar.class_variable_get(:@@foo)で値は取れるので、class_variablesで:@@fooを
返してもよい気がするのですが。
Files
うーん、議論が止まっているように見えて遺憾であります。前田さん、これって治らないとどのぐらい致命的でしょうか。
- Target version changed from 1.9.3 to 2.0.0
Motohiro KOSAKI wrote:
うーん、議論が止まっているように見えて遺憾であります。前田さん、これって治らないとどのぐらい致命的でしょうか。
今まで文句が出なかったということはたぶんあまり使われていないと思うので、targetを1.9.xに
しましょうか。
個人的には、Module#class_variablesもModule#constantsのように引数でコントロールできる
ようにする(デフォルトではスーパークラスも探索する)のがよいと思います。
- ruby -v changed from ruby 1.9.3dev (2011-06-16 trunk 32113) [i686-linux] to -
前田です。
2011年7月8日22:11 KOSAKI Motohiro kosaki.motohiro@gmail.com:
今まで文句が出なかったということはたぶんあまり使われていないと思うので、targetを1.9.xに
しましょうか。
個人的には、Module#class_variablesもModule#constantsのように引数でコントロールできる
ようにする(デフォルトではスーパークラスも探索する)のがよいと思います。
ええと僕の個人的な意見だと
・今回提示された新仕様を議論するなら1.9.4 いき
・1.8と同じ仕様にしろと主張し、かつmatzが受け入れて、かつ、実装が preview1
(7/17あたり)ぐらいまでに出てくるなら、1.9.3 アリ
ぐらいのスケジュール感覚でした。
どちらにしろまつもとさんが無反応のままだと申し訳ありませんが自動的に1.9.4にスリップということになります。や、前田さんが強権発動するなら従いますが。
いや、そんな権限ないです…。
いったん1.8に戻すというのも考えましたが、それだとそのクラスに定義された
クラス変数だけの一覧を取る手段がなくなるので、1.9.4に先送りした方がいい
気がします。
--
Shugo Maeda
前田です。
2011年7月8日22:11 KOSAKI Motohiro kosaki.motohiro@gmail.com:
今まで文句が出なかったということはたぶんあまり使われていないと思うので、targetを1.9.xに
しましょうか。
個人的には、Module#class_variablesもModule#constantsのように引数でコントロールできる
ようにする(デフォルトではスーパークラスも探索する)のがよいと思います。
ええと僕の個人的な意見だと
・今回提示された新仕様を議論するなら1.9.4 いき
・1.8と同じ仕様にしろと主張し、かつmatzが受け入れて、かつ、実装が preview1
(7/17あたり)ぐらいまでに出てくるなら、1.9.3 アリ
ぐらいのスケジュール感覚でした。
どちらにしろまつもとさんが無反応のままだと申し訳ありませんが自動的に1.9.4にスリップということになります。や、前田さんが強権発動するなら従いますが。
いや、そんな権限ないです…。
いったん1.8に戻すというのも考えましたが、それだとそのクラスに定義された
クラス変数だけの一覧を取る手段がなくなるので、1.9.4に先送りした方がいい
気がします。
--
Shugo Maeda
前田です。
Shugo Maeda wrote:
個人的には、Module#class_variablesもModule#constantsのように引数でコントロールできる
ようにする(デフォルトではスーパークラスも探索する)のがよいと思います。
この方針で作ったパッチを添付しておきます。
trunkならRails風に勝手にcommitしてもいいんですかね。¶
まつもとさん
前田です。
Shugo Maeda wrote:
個人的には、Module#class_variablesもModule#constantsのように引数でコントロールできる
ようにする(デフォルトではスーパークラスも探索する)のがよいと思います。
この方針で作ったパッチを添付しておきます。
trunkならRails風に勝手にcommitしてもいいんですかね。¶
こさきさんに「Matzがackしねーからreject、それが慣行だ」と言われてしまったので、
上記のような修正でよいかどうか確認をお願いします。
まつもとさん
前田です。
この方針で作ったパッチを添付しておきます。
trunkならRails風に勝手にcommitしてもいいんですかね。¶
こさきさんに「Matzがackしねーからreject、それが慣行だ」と言われてしまったので、
上記のような修正でよいかどうか確認をお願いします。
えええええええ。なにこの意図的な曲解(><;;
まつもとさん
前田です。
この方針で作ったパッチを添付しておきます。
trunkならRails風に勝手にcommitしてもいいんですかね。¶
こさきさんに「Matzがackしねーからreject、それが慣行だ」と言われてしまったので、
上記のような修正でよいかどうか確認をお願いします。
えええええええ。なにこの意図的な曲解(><;;
- Status changed from Open to Assigned
まつもとさん、この件ですがどうでしょうか?
shugo (Shugo Maeda) wrote:
前田です。
Shugo Maeda wrote:
個人的には、Module#class_variablesもModule#constantsのように引数でコントロールできる
ようにする(デフォルトではスーパークラスも探索する)のがよいと思います。
この方針で作ったパッチを添付しておきます。
trunkならRails風に勝手にcommitしてもいいんですかね。¶
- Assignee changed from matz (Yukihiro Matsumoto) to nobu (Nobuyoshi Nakada)
あ、気がついてなかった。constantsと同じような挙動を希望します。
って言ったら中田さんがやってくれるかな。
- Status changed from Assigned to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r36466.
Shugo, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
Also available in: Atom
PDF
Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0Like0