ruby - 类函数不包含在模块中

标签 ruby

尝试将我自己的函数(比如检查)注入(inject) Float 类。当我从一个模块执行时,它不会注入(inject)到 Float 类中。请看下面的片段。

irb(main):001:0> module QA
irb(main):002:1>   class Float
irb(main):003:2>     def self.check
irb(main):004:3>     end
irb(main):005:2>   end
irb(main):006:1> end
=> nil
irb(main):007:0> include QA
=> Object
irb(main):008:0> Float.respond_to?(:check)
=> false
irb(main):009:0> extend QA
=> main
irb(main):010:0> Float.respond_to?(:check)
=> false
irb(main):011:0> class Float
irb(main):012:1>   def self.check
irb(main):013:2>   end
irb(main):014:1> end
=> nil
irb(main):015:0> Float.respond_to?(:check)
=> true

最佳答案

这个:

module QA
  class Float
    def self.check
    end
  end
end

正在创建/修改类 QA::Float,而不是 Float。尝试做

QA::Float.respond_to?(:check)

你会看到的。

你可以改为这样做:

module QA
    def self.included(klass)
        Float.class_eval "def self.check;end"
    end
end

include QA
Float.respond_to?(:check)
# true

一些有用的引用:

关于ruby - 类函数不包含在模块中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6810199/

相关文章:

ruby-on-rails - 如何允许用户将他们的个人资料设为私有(private)或公开?

html - Ruby Nokogiri 提取 HTML 选项卡值

ruby - 将对象数组中的属性映射到另一个数组的更有效的 Ruby 方法?

ROC 曲线的 Ruby 实现

ruby - 获取当前步骤表单场景大纲

ruby - 使用 Ruby 连接到 MSSQL 数据库

ruby - 计算数组的统计信息

ruby - 使用 IAM 配置文件创建实例后无法访问 s3 存储桶

ruby - 相当于 Ruby 中的 PERL Carp->cluck( $msg )

Ruby openssl lib - 为什么 AES-256-CBC 解密在没有正确 IV 的情况下提供可读数据?