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. 當你JAR而不是WAR時,會發生什麼情況
- 5. 當你邏輯不是浮動時會發生什麼?
- 6. 當發生javascript運行時錯誤時會發生什麼?
- 7. 當程序運行時發生事件時會發生什麼
- 8. 當發生器運行的值不足以產生時會發生什麼?
- 9. 當你在Bash中執行「ls」時會發生什麼
- 10. 我可以從iPhone獲得什麼東西,當你開發
- 11. 當你在Git倉庫中運行`git add .git`時會發生什麼?
- 12. 當你產生一個循環時會發生什麼?
- 13. 什麼是H.450.2?當它不存在時會發生什麼?
- 14. 當executorservice關閉時,運行/阻塞的runnables會發生什麼()
- 15. 當我運行下面的命令時會發生什麼?
- 16. 當你同時觸摸兩個按鈕時會發生什麼
- 17. 與KleisliFunctor類似的東西是什麼?
- 18. 當你調用新的Object()時會發生什麼?
- 19. 當你調用UItableview的重裝兩次時會發生什麼
- 20. Erlang:當你f()中的一個Pid時會發生什麼?
- 21. 當我運行bundle exec黃瓜時,幕後會發生什麼?
- 22. 當兩個類創建對象時會發生什麼?
- 23. 當你rm文件時會發生什麼?
- 24. 當你在列表中調用`append`時會發生什麼?
- 25. 當你從C啓動A到B時會發生什麼?
- 26. 當你綁定到ItemSource時會發生什麼?
- 27. 當你在android中調用getSystemService(WIFI_SERVICE)時會發生什麼?
- 28. 當你輸入12ab到scanf(「%d」,&argu)時,會發生什麼?
- 29. 當你增加數組時,會發生什麼。 {A [in.nextInt()] ++;}
- 30. 當你停止VS調試器時會發生什麼?