什么是“self.class.include?”意味着什么?

时间:2017-10-11 17:52:00

标签: ruby

if self.class.include?(Msf::Payload::Single) and
  self.class.include?(Msf::Payload::Stager)
  self.module_info['Stage'] = {}

我试图执行“puts self.class”输出是“对象”。提前谢谢。

1 个答案:

答案 0 :(得分:3)

在实例方法中调用的

self.class返回对象类的引用。如果作为参数传递的模块包含在当前模块中,则Module#include?方法返回true

换句话说,您引用的代码实际上是在检查您正在操作的实例的类是混合Single还是Stager类。

以下是一个例子:

module One
end

class Two
  include One
end

class Three
end

t = Two.new
t.class.include?(One)
# => true

t = Three.new
t.class.include?(One)
# => false