Bug #4971
closedModule#class_variables
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
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
うーん、議論が止まっているように見えて遺憾であります。前田さん、これって治らないとどのぐらい致命的でしょうか。
Updated by shugo (Shugo Maeda) over 13 years ago
- Target version changed from 1.9.3 to 2.0.0
Motohiro KOSAKI wrote:
うーん、議論が止まっているように見えて遺憾であります。前田さん、これって治らないとどのぐらい致命的でしょうか。
今まで文句が出なかったということはたぶんあまり使われていないと思うので、targetを1.9.xに
しましょうか。
個人的には、Module#class_variablesもModule#constantsのように引数でコントロールできる
ようにする(デフォルトではスーパークラスも探索する)のがよいと思います。
Updated by shugo (Shugo Maeda) over 13 years ago
- 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
Updated by shugo (Shugo Maeda) over 13 years ago
前田です。
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
Updated by shugo (Shugo Maeda) over 13 years ago
- File class_variables.diff class_variables.diff added
前田です。
Shugo Maeda wrote:
個人的には、Module#class_variablesもModule#constantsのように引数でコントロールできる
ようにする(デフォルトではスーパークラスも探索する)のがよいと思います。
この方針で作ったパッチを添付しておきます。
trunkならRails風に勝手にcommitしてもいいんですかね。¶
Updated by shugo (Shugo Maeda) over 13 years ago
まつもとさん
前田です。
Shugo Maeda wrote:
個人的には、Module#class_variablesもModule#constantsのように引数でコントロールできる
ようにする(デフォルトではスーパークラスも探索する)のがよいと思います。この方針で作ったパッチを添付しておきます。
trunkならRails風に勝手にcommitしてもいいんですかね。¶
こさきさんに「Matzがackしねーからreject、それが慣行だ」と言われてしまったので、
上記のような修正でよいかどうか確認をお願いします。
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
まつもとさん
前田です。この方針で作ったパッチを添付しておきます。
trunkならRails風に勝手にcommitしてもいいんですかね。¶
こさきさんに「Matzがackしねーからreject、それが慣行だ」と言われてしまったので、
上記のような修正でよいかどうか確認をお願いします。
えええええええ。なにこの意図的な曲解(><;;
Updated by kosaki (Motohiro KOSAKI) over 13 years ago
まつもとさん
前田です。この方針で作ったパッチを添付しておきます。
trunkならRails風に勝手にcommitしてもいいんですかね。¶
こさきさんに「Matzがackしねーからreject、それが慣行だ」と言われてしまったので、
上記のような修正でよいかどうか確認をお願いします。
えええええええ。なにこの意図的な曲解(><;;
Updated by shyouhei (Shyouhei Urabe) over 12 years ago
- Status changed from Open to Assigned
Updated by shugo (Shugo Maeda) over 12 years ago
まつもとさん、この件ですがどうでしょうか?
shugo (Shugo Maeda) wrote:
前田です。
Shugo Maeda wrote:
個人的には、Module#class_variablesもModule#constantsのように引数でコントロールできる
ようにする(デフォルトではスーパークラスも探索する)のがよいと思います。この方針で作ったパッチを添付しておきます。
trunkならRails風に勝手にcommitしてもいいんですかね。¶
Updated by matz (Yukihiro Matsumoto) over 12 years ago
- Assignee changed from matz (Yukihiro Matsumoto) to nobu (Nobuyoshi Nakada)
あ、気がついてなかった。constantsと同じような挙動を希望します。
って言ったら中田さんがやってくれるかな。
Updated by shugo (Shugo Maeda) over 12 years ago
- 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.
-
variable.c (rb_mod_class_variables): return inherited variables
except when the optional argument is set to false.
[ruby-dev:44034] [Bug #4971] -
variable.c (rb_mod_constants): fix typo in documentation.