- 締切済み
インスタンス内から自分のクラス名を取得する方法
クラスインスタンス内から自分のクラス名を取得しようと思うと、self.class.nameで取得できますが、type.nameでも取得できます。 しかし、typeは非推奨メソッドとなっているため、警告が出て、このままでは使用することができません。 素直にself.classを使えばいいのかもしれませんが、selfのワンクッションがどうにも気に入りません。 スマートな記述方法あったら教えて下さい。 # self.class.nameを使用する場合 class MyClass def print_classname puts self.class.name # puts class.name これはエラー end end # type.nameを使用する場合 class MyClass2 def print_classname puts type.name # これはdeprecatedの記述で警告が出る end end
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- notnot
- ベストアンサー率47% (4900/10358)
回答No.1
self を書きたくないということなら、 alias :xclass :class しておいて、 xclass.name するくらいしかないと思います。スマートとは思いませんけど。 逆に、インスタンスメソッド定義の中で、class以外のメソッド呼び出しの時もselfを省略しないで書くことにすれば、全部統一が取れます。
お礼
ありがとうございます。 aliasは考慮から外れていました。 self.を書きたくないのではなくて、type書くとself.が必要ないのに、classで書く時はself.が必要というのが無駄だなと思ったからです。
補足
補足・・(うまく伝わっていないかもしれないので念のため) 考慮から外れていたというのは、思いつきませんでした、ということです。 つまりありがたいお答えですありがとうございますということです。