ruby-on-rails - 当你在不是类的东西上运行 class_eval 时会发生什么?

标签 ruby-on-rails ruby metaprogramming

test = "a"
test.class_eval do
  # what is going on here???
end

最佳答案

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

关于ruby-on-rails - 当你在不是类的东西上运行 class_eval 时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3499515/

相关文章:

ruby-on-rails - 将 db 转储到 Rails 中的 yml 固定装置的标准方法是什么?

ruby-on-rails - 如何获取 options_from_collection_for_select 的多个字段

ruby-on-rails - 在 Ruby on Rails 中使用网络摄像头

ruby - 带有实例变量的数学

ruby - 我怎样才能 "replace"通过 ruby​​ include 函数包含的模块

python - setattr 和 getattr 方法

ruby-on-rails - Ruby on Rails 新手

ruby-on-rails - flash和跨域问题

ruby - 得到 ruby 中两个日期之间的月份,年份

groovy - 在 Groovy 的 NodeChild 上添加动态方法的奇怪行为