当我写下以下程序时,class Classname puts "hi" end 将其保存为.rb文件,并在终端中执行该文件,输出“hi”将返回。我不明白为什么会这样。我难道不必将puts语句分配给一个方法,创建Classname类的对象,然后调用该对象上的方法才能得到该输出吗?或者至少将puts语句放在类的initialize方法中,然后创建一个对象?为什么它可以按照这种方式工作?
Ruby是一种脚本语言,这意味着您可以直接编写代码。puts 'hi' 在不定义任何类或方法的文件中编写代码。 同样地,当您定义一个类时,实际上是执行用于定义该类的代码。因此,在其中执行的代码可能会产生副作用,例如puts 'hi'。这很有用,因为元编程通常用于帮助定义类。
class
关键字定义一个类时,它实际上构造一个新的Class
对象并在其上下文中执行内部代码。请查看https://dev59.com/5mDVa4cB1Zd3GeqPbDZf#9202363。 - obatakuattr_accessor
方法?如果在对象初始化之前,定义initialize
的类的定义未执行,你会如何创建实例?为什么每次创建实例时都要反复执行initialize
方法的定义? - Jörg W Mittag