尝试将我自己的函数(比如检查)注入(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/