在Ruby中,s=";"富",;,s是字符串类对象,但s没有实例变量?

在Ruby中,s=";"富",;,s是字符串类对象,但s没有实例变量?,ruby,Ruby,如果使用Ruby 1.9.2 s = "foo" s.class # => String s.instance_variables # => [] 因此s是一个String类对象,由于它属于实现字符串概念的类,字符串类对象是连续字符,因此应该有实例变量来存储这些信息,那么instance\u variables为什么返回空数组呢?是因为(1)它应该返回什么?它不能返回某个实例变量,而该实例变量又是字符串对象。(2) 有实例变量,但它是Ruby的内部

如果使用Ruby 1.9.2

s = "foo"
s.class                # => String
s.instance_variables   # => []
因此
s
是一个
String
类对象,由于它属于实现字符串概念的类,字符串类对象是连续字符,因此应该有实例变量来存储这些信息,那么
instance\u variables
为什么返回空数组呢?是因为(1)它应该返回什么?它不能返回某个实例变量,而该实例变量又是字符串对象。(2) 有实例变量,但它是Ruby的内部变量,这是“神奇”的时刻吗。。。它发生在引擎盖下面,可以认为它是“魔术发生的”…假设我有一个类,它包含一个短语在3种不同语言中的翻译,然后有
@法语、@西班牙语、@latin
,这些都发生在“非魔法”级别,实例变量将显示为
实例变量


有没有办法打印出
String
类的内部实例变量?

String
是Ruby中的基本类型。正如您所说,Ruby公开内部实现是没有意义的,因为Ruby除了作为另一个
字符串
之外,没有其他方法向您呈现数据

这同样适用于其他基本类型:

> 3.instance_variables
=> []
没有任何方法或理由向您公开内部实现