Ruby: Как получить локальные и / или экземпляры переменных самостоятельно? - PullRequest
0 голосов
/ 25 июля 2010

Из примера:

local_var = "Thanks!"
@instance_var = "Thank you ,too"

Тогда как я могу получить часть local_var и instance_var самостоятельно.Я имею в виду погоду, есть метод, который можно назвать get_self_name, чтобы получить имя самого себя:

local_var.get_self_name # => 'local_var'
@instance_var.get_self_name # => '@instance_var' or => 'instance_var'

a = 'abc'
a.get_self_name # => 'a'

Ответы [ 2 ]

2 голосов
/ 25 июля 2010
$ irb
>> local_var = "foo"
=> "foo"
>> @instance_var = "bar"
=> "bar"
>> instance_variables
=> ["@prompt", "@instance_var"]
>> local_variables
=> ["_", "local_var"]

Вы также можете проверить ObjectSpace модуль.

Локальная переменная _ автоматически устанавливается на возвращаемое значение последнего оператора irb. @prompt - это, вероятно, формат приглашения irb или что-то подобное.

1 голос
/ 25 июля 2010

Нет способа, который может это сделать. Вот несколько способов обойти это:

-1- Использовать хэш:

local_var = "Thanks!"
@instance_var = "Thank you ,too"
hash = {
  local_var: local_var,
  instance_var: @instance_var
}

hash.index(@instance_var) #=> :instance_var

-2- использование instance_variables:

local_var = "Thanks!"
@instance_var = "Thank you ,too"

instance_variables.find {|x| instance_variable_get(x) == @instance_var } #=> :instance_var

Обратите внимание, что это не будет работать для локальных переменных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...