让';s ruby在解释文件时在类内执行代码

让';s ruby在解释文件时在类内执行代码,ruby,Ruby,当我有以下ruby代码时 #文件a.rb 甲级 放‘2’ 结束 如果我执行rb a.rb我会在屏幕上打印2。这是因为ruby解释代码的方式,但是,这种行为的名称是什么?它打印某些内容的原因是因为在定义classA的过程中,您要求它这样做。类块中的任何内容都被视为常规的Ruby代码,它并不特殊,因此打印、退出、建立网络连接、打开文件都可以像其他地方一样工作 这与JavaScript和C++的情况完全不同,在这里绝对不允许。 Ruby作为一种动态编程语言,有更多的自由度。这允许基于文件输入定义方法

当我有以下ruby代码时

#文件a.rb
甲级
放‘2’
结束

如果我执行
rb a.rb
我会在屏幕上打印
2
。这是因为ruby解释代码的方式,但是,这种行为的名称是什么?

它打印某些内容的原因是因为在定义class
A
的过程中,您要求它这样做。
块中的任何内容都被视为常规的Ruby代码,它并不特殊,因此打印、退出、建立网络连接、打开文件都可以像其他地方一样工作

<>这与JavaScript和C++的情况完全不同,在这里绝对不允许。 Ruby作为一种动态编程语言,有更多的自由度。这允许基于文件输入定义方法,或者您可以想象的任何东西

这种行为的名称基本上是“评估”,就像Ruby评估代码时,它解析并运行代码一样

这使您可以在Ruby中完成在其他语言中不可能完成的事情,而无需使用宏、预处理器技巧或其他技术:

class A
  if (Date.today.saturday? or Date.today.sunday?)
    def party!
      :on
    end
  end
end

这只会定义
聚会方法。

它打印某些内容的原因是因为在定义class
a
的过程中,您要求它这样做。
块中的任何内容都被视为常规的Ruby代码,它并不特殊,因此打印、退出、建立网络连接、打开文件都可以像其他地方一样工作

<>这与JavaScript和C++的情况完全不同,在这里绝对不允许。 Ruby作为一种动态编程语言,有更多的自由度。这允许基于文件输入定义方法,或者您可以想象的任何东西

这种行为的名称基本上是“评估”,就像Ruby评估代码时,它解析并运行代码一样

这使您可以在Ruby中完成在其他语言中不可能完成的事情,而无需使用宏、预处理器技巧或其他技术:

class A
  if (Date.today.saturday? or Date.today.sunday?)
    def party!
      :on
    end
  end
end

这只会定义
聚会方法,当代码在周末运行时。

另一个示例:
G类;def self.g;把“嗨”;结束;Gdef h;结束;end
显示
“hi”
,然后返回
:h
。更好的是:
B类;def b;把“嗨”;结束;新的.b;end
显示
“hi”
,然后返回
nil
;def self.g;把“嗨”;结束;Gdef h;结束;end
显示
“hi”
,然后返回
:h
。更好的是:
B类;def b;把“嗨”;结束;新的.b;end
显示
“hi”
,然后返回
nil