gpt4 book ai didi

ruby-on-rails - ruby 真的是一种完全面向对象的语言吗?

转载 作者:数据小太阳 更新时间:2023-10-29 07:09:37 25 4
gpt4 key购买 nike

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_tagjavascript_include_tagform_for 等,它们都遵循此 Object_name#method_name 语法,所以我猜它们只是普通函数。

所以我的问题是

  1. 这些 Rails 助手是什么?
  2. 如果它们只是起作用而不是从任何类继承。这不与所提出的主张相矛盾吗俗话说 - 在 ruby​​ 中,一切都是对象,没有原语。例如,人们引用 5.+(6) 说即使是运算符也只是简单的方法?

最佳答案

对于没有接收器调用的其他东西,请查看 Kernel 模块,其中定义了诸如 puts 之类的东西。由于该模块包含在 Object 中,因此它的方法随处可用。这与 - 恕我直言过度使用 - 声称一切都是对象的说法究竟有何矛盾?

关于ruby-on-rails - ruby 真的是一种完全面向对象的语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10652023/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com