Ruby 是完全面向对象的语言。在 ruby 中,一切都是对象,因此属于某个类。例如 5
属于 Object class
1.9.3p194 :001 > 5.class
=> Fixnum
1.9.3p194 :002 > 5.class.superclass
=> Integer
1.9.3p194 :003 > 5.class.superclass.superclass
=> Numeric
1.9.3p194 :005 > 5.class.superclass.superclass.superclass
=> Object
1.9.3p194 :006 > 5.class.superclass.superclass.superclass.superclass
=> BasicObject
1.9.3p194 :007 > 5.class.superclass.superclass.superclass.superclass.superclass
=> nil
因此,我们必须通过在类/对象名称前加上前缀来调用所有方法,如 Object_name#method_name
中所示。示例:
5.times{|i| puts i}
现在,Rails 有这些所谓的助手,如 stylesheet_link_tag
、javascript_include_tag
、form_for
等,它们都遵循此 Object_name#method_name
语法,所以我猜它们只是普通函数。
所以我的问题是
- 这些 Rails 助手是什么?
- 如果它们只是起作用而不是
从任何类继承。这不与所提出的主张相矛盾吗
俗话说 - 在 ruby 中,
一切都是对象,没有原语
。 例如,人们引用5.+(6)
说即使是运算符也只是 简单的方法?
最佳答案
对于没有接收器调用的其他东西,请查看 Kernel
模块,其中定义了诸如 puts
之类的东西。由于该模块包含在 Object
中,因此它的方法随处可用。这与 - 恕我直言过度使用 - 声称一切都是对象的说法究竟有何矛盾?
关于ruby-on-rails - ruby 真的是一种完全面向对象的语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10652023/