如果使用Ruby 1.9.2,
s = "foo"
s.class # => String
s.instance_variables # => []
所以s
是一个String
类对象,因为它属于一个实现字符串概念的类,它是连续的字符,所以应该有String类对象的实例变量存储这些信息,那么instance_variables
如何返回一个空数组呢?是因为(1)它应该返回什么?它不能返回一些实例变量,而后者又是一个String对象。 (2)它是“神奇的”时刻,有实例变量,但它是Ruby的内部......它发生在引擎盖下并且可以认为它“通过魔法发生”...假设我有一个类包含3种不同语言的短语翻译,然后有@french, @spanish, @latin
,这些都发生在“非魔法”级别,实例变量将显示instance_variables
。
有没有办法打印出String
类的内部实例变量?
答案 0 :(得分:5)
String
是Ruby中的基本类型。正如你所说,Ruby暴露内部实现是没有意义的,因为除了另一个String
之外,Ruby无法向你呈现数据。
这同样适用于其他基本类型:
> 3.instance_variables
=> []
没有办法或理由向您公开内部实施。