如果我将此文件作为“ ruby x.rb
”运行:
class X
end
x = X.new
叫“”的东西是X.new
什么?
它是一个对象/过程/等吗?
Ruby 中的一切都发生在某个对象的上下文中。顶层的对象称为“main”。它基本上是一个具有特殊属性的 Object 实例,其中定义的任何方法都被添加为 Object 的实例方法(因此它们在任何地方都可用)。
所以我们可以制作一个完全由以下内容组成的脚本:
puts object_id
@a = 'Look, I have instance variables!'
puts @a
它将打印“105640”和“看,我有实例变量!”。
这不是你通常需要关心的事情,但它就在那里。
顶级调用者是一个对象 main,它属于 Object 类。
试试这个红宝石程序:
p self
p self.class
这是X级。您正在调用创建类 X 对象的“new”方法。因此,如果您将此文本作为脚本运行,Ruby:
new
一个。x
new
新类的方法X
,创建一个 X 实例对象;x 获得对该对象的引用。这是运行该行的 ruby 解释器
x = X.new
与许多脚本语言一样,脚本是从上到下解释的,而不是像大多数编译语言那样具有标准的入口点方法。
正如查理马丁所说,X.new 是对 X 类的构造函数的调用,它返回一个 X 类型的对象,存储在变量 x 中。
根据您的标题,我认为您正在寻找更多。Ruby 不需要 main,它按照看到的顺序执行代码。因此,必须在调用它们之前包含依赖项。
因此,您的 main 是在类或模块定义之外编写的任何过程式代码。