test = "a"
test.class_eval do
# what is going on here???
end
1
A
回答
3
ActiveSupport將class_eval
添加到Object,因此它可以用於任何事物,而不僅僅是類。
在您的例子,它的作用是等價的:
test = "a"
class << test
# do stuff
end
的實際執行情況的Rails 2.3的是在這裏:http://github.com/rails/rails/blob/2-3-stable/activesupport/lib/active_support/core_ext/object/singleton_class.rb
2
好了,我的電腦上,你會得到一個NoMethodError因爲String類沒有class_eval
方法:)
2
我認爲,在香草紅寶石,這是非法的。例如,如果你在irb中嘗試它,你會得到一個NoMethodError。
在rails控制檯中,可能會添加額外的方法,導致字符串的行爲與類相似。
相關問題
- 1. 當你運行一個程序時會發生什麼?
- 2. 當沒有東西可以返回時返回的對象會發生什麼?
- 3. 當你不加入你的主題時會發生什麼?
- 4. 當發生javascript運行時錯誤時會發生什麼?
- 5. 當你邏輯不是浮動時會發生什麼?
- 6. 當你JAR而不是WAR時,會發生什麼情況
- 7. 當發生器運行的值不足以產生時會發生什麼?
- 8. 我可以從iPhone獲得什麼東西,當你開發
- 9. 什麼是H.450.2?當它不存在時會發生什麼?
- 10. 當我運行下面的命令時會發生什麼?
- 11. 當executorservice關閉時,運行/阻塞的runnables會發生什麼()
- 12. 當你同時觸摸兩個按鈕時會發生什麼
- 13. 與KleisliFunctor類似的東西是什麼?
- 14. 當你調用UItableview的重裝兩次時會發生什麼
- 15. Erlang:當你f()中的一個Pid時會發生什麼?
- 16. 當兩個類創建對象時會發生什麼?
- 17. 當你rm文件時會發生什麼?
- 18. 當你從C啓動A到B時會發生什麼?
- 19. 當你在瀏覽器中輸入URL時會發生什麼
- 20. 當你停止VS調試器時會發生什麼?
- 21. 當你增加數組時,會發生什麼。 {A [in.nextInt()] ++;}
- 22. 當你在unix shell上鍵入時會發生什麼
- 23. 當你使用unbind()失敗時會發生什麼?
- 24. 當父類對象被分配了子類對象時會發生什麼?
- 25. 這是什麼東西叫?
- 26. php中的sql在運行時不會返回任何東西
- 27. 當你添加一個類到NSMutableArray並且你改變了這個對象和數組時,會發生什麼?
- 28. 當你拋出異常時,python對象會發生什麼變化
- 29. 當你用mlockall設置的內存不足時會發生什麼?
- 30. 當我ping 127.0.0.1時會發生什麼