ruby – “内核”的目的是什么?

>内核模块的目的是什么?如果在内核上定义的所有内容都是在Object上定义的,并且没有像Kernel这样的模块,会发生什么变化?
>当我想定义一个可以在任何对象上调用方法时,我应该在内核还是在对象上定义它?

解决方法

我将从一个问题开始:在一个典型的 Kernel方法中,例如puts会有什么样的自我?最有意义的自我内部放置可能是Ruby运行时本身.类似于其他“真正想要成为函数方法”,如 Arrayfork.因此,您可以将内核视为对Ruby本身或多或少的命令或消息的方法的转储基础.

内核也有奇怪的方法,如subchop,它们只适用于一次性ruby -e脚本.这些东西倾向于使用$_作为隐含的自我,但我认为它们可以被视为上面“Ruby运行时命令”的特殊情况.

当您希望能够在任何对象上调用方法时,方法在哪里?我会说它会进入Object.如果该方法实际上是伪装的函数并且没有有意义的自我,那么它将进入内核.

相关文章

以下代码导致我的问题: class Foo def initialize(n=0) @n = n end attr_accessor :n d...
这是我的spec文件,当为上下文添加测试“而不是可单独更新用户余额”时,我得到以下错误. require 's...
我有一个拦截器:DevelopmentMailInterceptor和一个启动拦截器的inititializer setup_mail.rb. 但我想将...
例如,如果我有YAML文件 en: questions: new: 'New Question' other: recent: ...
我听说在RSpec中避免它,let,let !,指定,之前和主题是最佳做法. 关于让,让!之前,如果不使用这些,我该如...
我在Rails中使用MongoDB和mongo_mapper gem,项目足够大.有什么办法可以将数据从Mongoid迁移到 Postgres...