ruby - block 内的 def 函数能完成什么任务?

标签 ruby module block mixins

我对 Ruby 相当陌生,但我遇到了这个奇怪的要点,其中函数定义代码写在 do block 代码中。这样做的目的是什么:

 module Hi
   def self.included(base)
     base.class_eval do
       def hello; puts 'Hello' end
     end
    end
 end

我确信在继续之前我应该​​首先了解 Mixin 的概念(我正在深入研究 mixin 之类的东西),但是 def :hello 在 do block 中的使用方式让我感到困惑

最佳答案

这段特定的代码的作用是在包含此模块的任何类中定义一个方法(hello)。鉴于此,以下两段代码(大致)等效:

class Foo
  include Hi
end

# ...is equivalent to...

class Foo
  def hello
    puts 'Hello'
  end
end

您将找到 Module#class_eval 的文档和 Module.included信息丰富。

关于ruby - block 内的 def 函数能完成什么任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9663178/

相关文章:

ruby - 是否可以在 ruby​​ 的传递 block 中引用传递给方法的参数?

ruby-on-rails - 在 rails 中记录完整的堆栈跟踪,包括所有 gem

java - 从 Java 的角度来看, 'self' 和 'new' 在 Ruby 中意味着什么?

spring - Spring中有多少个模块?这些是什么?

Linux 内核模块阻塞整个 Linux

ruby - 用于简单数组操作的慢速 Ruby

ruby - 为什么 Chef 文件 search_file_replace 不起作用

android - 将 Android Studio 项目导入为模块

html - 有没有办法在输入时自动扩展内容 block ?