【问题标题】:Why is code inside of classes executed automatically when I run a ruby script?为什么当我运行 ruby​​ 脚本时,类中的代码会自动执行?
【发布时间】:2019-06-20 06:06:08
【问题描述】:

当我写下面的程序时,

class Classname
  puts "hi"
end

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

【问题讨论】:

  • 当你使用class关键字定义一个类时,它实际上构造了一个新的Class对象并在其上下文中执行内部代码。见stackoverflow.com/a/9202363/591495
  • 如果类中的代码没有被执行,你将如何定义方法?如果类中的代码没有被执行,你将如何调用attr_accessor 方法?如果initialize 的定义类在对象初始化之前没有被执行,你将如何创建一个实例?为什么initialize 方法的定义必须为您创建的每个实例一遍又一遍地执行?

标签: ruby class


【解决方案1】:

Ruby 是一种脚本语言,这意味着你可以只写

puts 'hi'

在没有定义任何类或方法的文件中。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-13
    • 1970-01-01
    • 2015-11-19
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 2020-07-15
    • 2011-11-26
    相关资源
    最近更新 更多