Подстановка строки в ruby ​​зависит от первого символа переменной

После того, как я подумал, что область действия переменной будет причиной, по которой я получил подсказку, эта замена зависит от того, является ли первый символ переменной буквой / подчеркиванием или нет. Но я не понимаю намерения. Давайте возьмем этот пример:

$var1 = "bar"
_var2 = "bar"
var3 = "bar"
Var4 = "bar"
@var5 = "bar"
puts "foo #$var1"
puts "foo #_var2"
puts "foo #var3"
puts "foo #Var4"
puts "foo #@var5"

что приводит к этому:

foo bar
foo #_var2
foo #var3
foo #Var4
foo bar

Я ожидаю, что для всех 5 строк одинаково. Это ошибка? Или какова цель этого поведения?

1 ответ

Дело не в сфере. Вопрос здесь заключается в том, {} после # может быть опущено в интерполяции. Если вы положите {}, тогда любой из них выше будет работать. Если у вас есть переменная, начинающаяся с небуквенного символа (символа, отличного от алфавита или подчеркивания, т.е. $ или же @), вы можете опустить {}, Если вы опустите {} когда вы не можете, тогда это не будет интерполировано.

Другие вопросы по тегам