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