我有以下三个类:
class MessageBuilder
def initialize(template)
@template = template
puts @template.instance_of? MessengerTemplate
end
end
class MessengerTemplate
def initialize
@default_template_id = "111111"
end
end
class JobTemplate < MessengerTemplate
def initialize(name)
@name = name
@template_id = "2222"
end
end
我正在尝试检查传递给的参数是否MessageBuilder#initialize
是MessengerTemplate
. 如果没有,我需要抛出一个错误。
当我打电话时:
message = MessageBuilder.new(JobTemplate.new("Invoice"))
构造函数中的以下行:
puts @template.instance_of? MessengerTemplate
打印FALSE
。
有人可以告诉我我在这里做错了什么吗?
尝试:
@template.is_a?(MessengerTemplate)
如文档中所述:
如果class是obj的类,或者class是obj或obj 中包含的模块的超类之一,则返回 true 。
MessengerTemplate
是 的超类@template
,因此@template.is_a?(MessengerTemplate) => true
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句