[英]What happens when you run class_eval on something that's not a class?
test = "a"
test.class_eval do
# what is going on here???
end
的ActiveSupport增加class_eval
到對象,因此它可以在任何可以使用,而不僅僅是類。
在您的示例中,它的作用相當於:
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
好吧,在我的計算機上,你得到NoMethodError,因為String類沒有class_eval
方法:)
我認為在香草Ruby中,這是非法的。 例如,如果您在irb中嘗試它,您將獲得NoMethodError。
在rails控制台中,可能會添加額外的方法,因為字符串的行為類似於類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.