ruby - 在Ruby中,s = "foo",并且s是一个String类对象,但是s没有实例变量?

标签 ruby

如果使用 Ruby 1.9.2,

s = "foo"
s.class                # => String
s.instance_variables   # => []

so s是一个String类对象,由于它属于一个实现字符串概念的类,字符串是连续的字符,所以应该有实例String 类对象的变量来存储这些信息,那么为什么 instance_variables 返回一个空数组呢?是因为(1)它应该返回什么?它不能返回一些实例变量,而该实例变量又是一个 String 对象。 (2) 这是“神奇”的时刻吗,有实例变量,但它是 Ruby 内部的……它发生在幕后,可以认为它“神奇地发生”……假设我有一个类包含 3 种不同语言的短语翻译,然后是 @french、@spanish、@latin,这些发生在“非魔法”级别,实例变量将显示为 instance_variables

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

最佳答案

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

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

> 3.instance_variables
=> []

没有任何方法或理由向您公开内部实现。

关于ruby - 在Ruby中,s = "foo",并且s是一个String类对象,但是s没有实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5392694/

相关文章:

javascript - 直到页面刷新,JQuery 才会运行

ruby - sinatra-flash gem 不工作

ruby-on-rails - 带有 nokogiri 的空 html

ruby-on-rails - 没有要加载的文件 -- Ruby Enterprise Edition 1.8.7 下的 rails/cli

ruby - 通过方法语法调用的运算符方法的优先级

ruby - Watir 可以与 Firefox Extensions 交互吗?

ruby - Ruby 正则表达式中的\w 匹配汉字

ruby-on-rails - 在 Ruby 中解析日期

Ruby 日期计算 : Weird Outputs

ruby - 使用 Plivo,如何将未接听的电话转接至语音信箱?