作者godfat (godfat 真常)
看板Ruby
标题Re: [问题] after_initialize and after_find
时间Fri Aug 26 13:31:26 2011
※ 引述《tonytonyjan (南洋大兜虫)》之铭言:
: ※ 引述《godfat (godfat 真常)》之铭言:
: : 这边 self reflection 是指?
: 就是反射,我想handler靠的就是反射做到的吧,而反射比起直接呼叫要来得吃效能
: 所以忽略handler的写法,就视同避免反射发生,让效率更好
: 但这也只是我的猜测,没有什麽根据
: http://en.wikipedia.org/wiki/Reflection_(computer_programming)
你的意思是这样的差异吗?
a.b 和 a.public_send(:b)
这在 ruby 里应该不太会被叫 reflection, 因为 a.b 本来就不是 static 的。
另外 wikipedia 里那范例不太好,他写:
Object.const_get(:Foo).send(:new).send(:hello)
似乎用这样比较像
Object.const_get(:Foo).method(:new).call.method(:hello).call
因为 reflection 的意思比较接近去观察程式本身,但用 send
其实并没有真的去观察什麽,因为 ruby 本来就是用那种方式在跑的。
anyway... 名词问题,不重要
: 第二个版本的程式码我觉得很奇怪,如果说before_validation的handler是method
: 而注册handler的功能就写在里面,那麽照理来说
: handler写法会因为先被我定义的before_validation 给 override 导致无效吧……
: 但实验结果却还是有注册到,百思不得其解……
: 还有更奇怪的……
我觉得... 就是说直接用 def before_validation 是 deprecated 了吧?
至於奇怪的结果,我是不想追究... 就一律用 Base.before_validation
就是了,省得跟 rails 内部打交道 :/
: 所以我被文件骗了吗?(眼神死)
: 而我照着文件的说的做,用method define,竟然也跑出和上面同样的警告……
: 谁可以告诉我这是为什麽Orz
我不确定文件上写什麽,但 rails 变动太快,文件我通常是不大信的...
只看实验结果或是 source :/
: 实验完就到吃饭时间了,等等再查Orz
: 谢谢真常大的回覆=)
不会 :) 没帮到什麽忙 @@
--
Nobody can take anything away from him.
Nor can anyone give anything to him.
What came from the sea,
has returned to the sea.
Chrono Cross
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 202.169.166.114