ruby中非面向对象的方面

use*_*463 2 ruby

我听说"Ruby是纯粹的OOP语言","Ruby中的所有东西都是对象".如果是这样,为什么我们有这两种情况呢?

  1. 函数类似于字符串对象putsprint处理它.根据OOP规则,对象的方法是应该操纵它的状态的方法.
  2. 我试图在irb中定义函数,并接受它.编写函数不是面向对象的,因为如果它是面向对象的,我们就不能以这种方式定义函数; 我们应该像在C#中一样在类中定义它们.

任何人都可以解释这两种情况如何符合"Ruby是纯OOP语言"这一短语吗?

saw*_*awa 6

  1. puts并且print不对参数做任何事情(顺便说一下,这些参数不一定是字符串).他们修改IO流,这就是定义这些方法的地方(尽管语法糖Kernel使得它们几乎可以从任何地方访问).

  2. 当没有显式的类体时,代码将在main属于Object该类的对象的上下文中进行解释.