在ruby中,什么是以#开头的变量/对象/事物
我是Ruby新手,所以请轻松:) 不管怎么说,我正在努力解决一些问题。特别是有一个对象称为:在ruby中,什么是以#开头的变量/对象/事物,ruby,chef-infra,Ruby,Chef Infra,我是Ruby新手,所以请轻松:) 不管怎么说,我正在努力解决一些问题。特别是有一个对象称为: new_resource.driver.ec2_client 当我对该对象执行检查时,它将返回以下内容: #<Aws::EC2::Client> # 所以,我的问题是:这是什么?在Ruby中,什么样的“东西”以磅符号(散列)开头并包含在其中 非常感谢。这是的默认实现(尽管应该包括对象ID)。在某些情况下,实现您自己的方法可能很有用,因此您可以立即了解您想要了解的有关此对象的内容。#只是
new_resource.driver.ec2_client
当我对该对象执行检查时,它将返回以下内容:
#<Aws::EC2::Client>
#
所以,我的问题是:这是什么?在Ruby中,什么样的“东西”以磅符号(散列)开头并包含在其中
非常感谢。这是的默认实现(尽管应该包括对象ID)。在某些情况下,实现您自己的方法可能很有用,因此您可以立即了解您想要了解的有关此对象的内容。
#
只是一个随机字符,在这里没有进一步的含义。Ruby的inspect方法的输出大致如下,除非您重写它:
"#<#{self.class}:0x#{self.object_id.to_s(16)}"
“#它是复杂ruby对象的默认字符串表示形式,没有更友好的字符串表示形式。在本例中,Aws::EC2::Client
对象。也许会有帮助。我说“也许”“因为我对chef和Amazon弹性计算云一无所知,但我知道如何使用谷歌。我不知道前导的磅符号,但它通常表示类实例。请准确显示返回的内容,而不是“类似”,这实际上是它返回的内容:#@CarySwoveland Good call。我已经做到了。谢谢。object_id
必须向左移动1位,输出用零填充,即它更像sprintf('#',self.class,self.object_id@Stefan,因此是“粗略的”。
class Foo ; end
Foo.new.inspect
#=> "#<Foo:0x007ffe0eeea520>"