在Ruby中,s=";"富",;,s是字符串类对象,但s没有实例变量?
如果使用Ruby 1.9.2在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的内部
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
=> []
没有任何方法或理由向您公开内部实现