- blogs:
- cles::blog
2011/01/27

下位クラスで再定義された定数を上位クラスで使う

ちょっと前に書いたRubyスクリプトの定数部分だけを書き換えたクラスが必要になったのですが、コピーして定数部分を書き換えて使うのはださすぎるし、なるべくスーパークラスの修正は少なくしたいし、ということで何かいい方法がないかと思って試行錯誤してみたらいい方法を思いついたのでメモ。
具体的にはCONSTと書くところをself.class::CONSTとすることで上位クラスで定義されたメソッドであっても、下位クラスで定義された定数を使って動いてくれます。
class A
CONST = 'aaa'
def put_const()
puts CONST + ',' + self.class::CONST
end
end
class B < A
CONST = 'bbb'
end
class C < B
end
A.new.put_const # => aaa,aaa
B.new.put_const # => aaa,bbb
C.new.put_const # => aaa,bbb
本当はちゃんとリファクタリングすべきですが、今回は急ぎなのでひとまずこれでよしとしました。
ファイルをコピーして使うよりも幾分ましでしょう。
トラックバックについて
Trackback URL:
お気軽にどうぞ。トラックバック前にポリシーをお読みください。[policy]
このエントリへのTrackbackにはこのURLが必要です→https://blog.cles.jp/item/4038
Trackbacks
このエントリにトラックバックはありません
Comments
愛のあるツッコミをお気軽にどうぞ。[policy]
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
古いエントリについてはコメント制御しているため、即時に反映されないことがあります。
コメントはありません
Comments Form
コメントは承認後の表示となります。
OpenIDでログインすると、即時に公開されます。
OpenID を使ってログインすることができます。
サイト内検索
検索ワードランキング
へぇが多いエントリ
閲覧数が多いエントリ
1 . アーロンチェアのポスチャーフィットを修理(112127)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110769)
3 . 年次の人間ドックへ(110368)
4 . 2023 年分の確定申告完了!(1つめ)(109915)
5 . 三菱鉛筆がラミーを買収(109814)
2 . 福岡銀がデマの投稿者への刑事告訴を検討中(110769)
3 . 年次の人間ドックへ(110368)
4 . 2023 年分の確定申告完了!(1つめ)(109915)
5 . 三菱鉛筆がラミーを買収(109814)
cles::blogについて
Referrers