サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
rubyo.hatenadiary.org
クラス名からクラスを得る方法は、リファレンスマニュアルによると eval を使う方法、Object#const_get を使う方法の二通りがあるようです。 #!/usr/local/bin/ruby class Player attr_accessor :name, :age def initialize(name, age) @name = name @age = age end end player1 = Object.const_get('Player').new('rubyo', 19) puts player1.name puts player1.age player2 = eval('Player').new('rubco', 18) puts player2.name puts player2.ageこの時クラス名が Net::HTTP のようにネストしている場合の方法につい
http://d.hatena.ne.jp/rubyo/20060402/1143993335 の続きです。ささださんに教えてもらいました。有名な奥の手、だそうです。 #!/usr/local/bin/ruby class Player attr :name, :age define_method(:initialize) { |@name, @age| } end player = Player.new('Rubyo', 19) player.name.displayたしかにこれで "Rubyo" と表示されました。define_method は Kernel モジュールに実装されているプライベートメソッドでしょうか。Kenerl.define_method としたところ class.rb:5: private method `define_method' called for Kern
特定のインスタンスだけが実行できるメソッドを特異メソッド、というそうです。特異メソッド以外にも Ruby では"特異"という単語がよくでてくるような気がします。特異メソッドは英語では "Singleton Method"、と呼ばれるようです。 a = "hello" b = a.dup def a.to_s "The value is '#{self}'" endあるいは class << a def to_s "The value is '#{self}'" end endと書けるとのこと。夢の中で見た謎の文法 "class << a" の謎が解けました。 使いどころはまだよく分かっていません。特定のインスタンスの動きをちょっとだけ変えたい、という時などでしょうか。a と b は同じインスタンスだけれども、a の動きだけちょっと変えたい、でも同じインタフェースでそれらは扱いたい、といった
このページを最初にブックマークしてみませんか?
『rubyo (るびお) の日記』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く