为什么在运行 Ruby 脚本时,类中的代码会自动执行?

3
当我写下以下程序时,
class Classname
  puts "hi"
end

将其保存为.rb文件,并在终端中执行该文件,输出“hi”将返回。我不明白为什么会这样。我难道不必将puts语句分配给一个方法,创建Classname类的对象,然后调用该对象上的方法才能得到该输出吗?或者至少将puts语句放在类的initialize方法中,然后创建一个对象?为什么它可以按照这种方式工作?


4
当您使用class关键字定义一个类时,它实际上构造一个新的Class对象并在其上下文中执行内部代码。请查看https://dev59.com/5mDVa4cB1Zd3GeqPbDZf#9202363。 - obataku
如果类中的代码不执行,你会如何定义方法?如果类中的代码不执行,你会如何调用attr_accessor方法?如果在对象初始化之前,定义initialize的类的定义未执行,你会如何创建实例?为什么每次创建实例时都要反复执行initialize方法的定义? - Jörg W Mittag
1个回答

5
Ruby是一种脚本语言,这意味着您可以直接编写代码。
puts 'hi'

在不定义任何类或方法的文件中编写代码。

同样地,当您定义一个类时,实际上是执行用于定义该类的代码。因此,在其中执行的代码可能会产生副作用,例如puts 'hi'。这很有用,因为元编程通常用于帮助定义类。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接