GWのるびみ。
遊んだり遊んだり遊んだり遊んだり遊んだりした ^-^
だめだこれ ^-^;;;;;;;;;;;;;;
今日のるびみ。
死にそう >_<;;;;;;;;
そういえば珠玉のプログラミングという本を借りました!
全然Rubyじゃないけど ^-^;;;
珠玉のプログラミング―本質を見抜いたアルゴリズムとデータ構造
- 作者: ジョンベントリー,Jon Bentley,小林健一郎
- 出版社/メーカー: ピアソンエデュケーション
- 発売日: 2000/10
- メディア: 単行本
- 購入: 30人 クリック: 551回
- この商品を含むブログ (162件) を見る
今日のるびみ。
メソッドを一度しか呼び出せなくするためのModuleを書いていたのですが、今日うさぎ本を読んでいたらネタが被ってることに気がつきました >_<;;;;;;;
るびみマジうっかりさん ^-^;;;;
二つのeval
class Hoge end hoge = Hoge.new add_method1 = %q{ def hoge puts "hoge1" end } add_method2 = %q{ def hoge puts "hoge2" end } Hoge.module_eval(add_method1) hoge.hoge #=> hoge1 hoge.instance_eval(add_method2) hoge.hoge #=> hoge2
意図した動作です ^-^
class Hoge end hoge = Hoge.new add_method1 = %q{ def hoge puts "hoge1" end } add_method2 = %q{ def hoge puts "hoge2" end } hoge.instance_eval(add_method1) hoge.hoge #=> hoge1 Hoge.module_eval(add_method2) hoge.hoge #=> hoge1
え? ^-^;;;;;;
追記:さすがにここで終わると非常にまずい気がしたので追記 >_<;;;
instance_evalの場合は、インスタンスhogeの特異メソッド定義になります。
クラスHogeに同名のメソッドを定義しても、インスタンスhogeには特異メソッドが既にあるためにそちらが優先されるのだと思います ^-^
続・aliasの不思議
19:05 (she) あと undef の話は
19:05 (she) んーと結局プロトタイプベースだって話なんだけど
19:05 (she) undef は関数ポインタ消してるだけってのは正しくて
19:06 (she) で、 undef され尽くしたらメソッドの実装も消えるよ
19:06 (she) GC に回収されるはず
19:06 (she) alias したら複数個所から参照されてる状態になるわけですね
だそうです ^-^
めんどくさいのでそのまま引用しました ^-^;;;
今日のるびみ。
これからお出かけだよ ^-^