如何从BasicObject
中访问Ruby类型名称? 我明白"...如果不使用完整的类路径,将无法找到公共类",但我不知道指定完整类路径的语法。
下面的代码失败,因为Hash
未导入BasicObject
。
class Basic < BasicObject
def flexible(data)
if (data.is_a?(Hash))
puts "It's a hash!"
end
end
end
foo = Basic.new
foo.flexible({})
要回答您的直接问题,您可以访问如下Hash
:
if (data.is_a?(::Hash))
puts "It's a hash!"
end
由于其他原因,这仍然会失败,这是因为BasicObject
不包括Kernel
,因此puts
不可用:
#<Basic:0x000055c405afbc88> 的未定义方法"放置">
如果您也这样做:
class Basic < BasicObject
include ::Kernel
或者这个:
::Kernel.puts "It's a hash!"
然后它应该按预期工作。