Я просматривал документ рубин ядра и увидел этот метод:Ruby local_variables возвращает: символы?
a = 2
local_variables # => [:a, :_]
Почему это возвращение: а и не? Я думал, что символ «:» зарезервирован для символов, но символ: a не указывает на переменную a и на ее присвоенное значение, 2.
Кроме того, как бы я мог обратиться к фактическим переменным через это метод? Как и в b = local_variables.first (будет 2, но есть: a).
Есть ли причина этого поведения, что это такое?
Благодаря/
Вместо 'eval (: a.to_s)', вы можете использовать 'binding.local_variable_get (: a)'. Поэтому для перечисления всех входов или локальных переменных: 'def show_inputs (a, b, c)' 'Hash [local_variables.map {| name | [name, binding.local_variable_get (name)]}] ' ' end' 'show_inputs ('one', 'two', 'three')' '# => {: a =>" one ",: b => «two»,: c => «three»} ' –
Итак, это не работает очень хорошо. Вот что я имел в виду, чтобы выглядеть так: https://gist.github.com/jcamenisch/f7a3daee296e619086c9 –
@JonathanCamenisch спасибо, я обновил свой ответ – Stefan