При использовании 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
?