什么是以红宝石中的#开头的变量/对象/事物

时间:2016-08-30 06:42:24

标签: ruby chef

我是Ruby新手,所以请轻松一下:)。

无论如何,我正在尝试在chef-provisioning-aws gem中找出一些东西。有一件事特别是有一个叫做的对象:

new_resource.driver.ec2_client

当我对该对象进行检查时,它会返回以下内容:

#<Aws::EC2::Client>

所以,我的问题是:这是什么? Ruby中的什么样的“东西”以井号(哈希)开头并且具有&lt; ...&gt;在它?

非常感谢。

2 个答案:

答案 0 :(得分:5)

除非你覆盖它,否则Ruby的inspect方法的输出大致是这样的:

"#<#{self.class}:0x#{self.object_id.to_s(16)}"

换句话说:"#<ClassName:0xobject_id in hex>"

 class Foo ; end
 Foo.new.inspect
 #=> "#<Foo:0x007ffe0eeea520>"

似乎对于Aws::EC2::Client它被覆盖并且不包括对象id。

答案 1 :(得分:2)

它是inspect method的默认实现(尽管应该包含对象ID)。在某些情况下,实现自己的方法可能很有用,因此您可以即时了解您想要了解的有关此对象的内容。 #只是一个随机字符,在这里没有其他含义。