Ruby 模块中不包括类函数
试图将我自己的函数(比如check)注入Float类。当我从一个模块执行操作时,它不会被注入到Float类中。请参阅以下代码片段Ruby 模块中不包括类函数,ruby,Ruby,试图将我自己的函数(比如check)注入Float类。当我从一个模块执行操作时,它不会被注入到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 =>
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
这:
正在创建/修改类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
一些有用的参考资料:
- 这是:
正在创建/修改类
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
一些有用的参考资料:
QA::Float
类,而不是Float
类。如果要将该方法添加到Float
类中,应该执行以下操作
module QA
class ::Float
# stuff
end
end
或者更好的是
class Float
# stuff
end
您已将该方法添加到
QA::Float
类,而不是Float
类。如果要将该方法添加到Float
类中,应该执行以下操作
module QA
class ::Float
# stuff
end
end
或者更好的是
class Float
# stuff
end
@Harikrishnan R,据我记忆所及,
:
在类名将这个类引用到它的父类之前,它是对象
,但是默认情况下,我们实际上可以只键入类Float
来表示类::Float
。CMIIW Jorg&mu。@Harikrishnan R,据我记忆所及,:
在类名将这个类引用到它的父类之前,它是对象
,但默认情况下,我们实际上可以键入类浮点
来表示类::浮点
。CMIIW Jorg&mu。