Забелязвам един код код в библиотеката Spree:
label_with_first_letters_capitalized = t(options[:label]).gsub(/bw/)#{$&.upcase}
може ли някой да ми каже какво означава "$ &"? Благодаря!
Отговори:
8 за отговор № 1Тук е позоваване на някои от тези специални променливи, позволени в рубин, По принцип това връща това, което беше последното съвпадение на шаблона.
От свързана страница:
$&
съдържа съвпадащия низ от предишното успешно съвпадение на шаблона.>> "the quick brown fox".match(/quick.*fox/) => #<MatchData:0x129cc40> >> $& => "quick brown fox"
3 за отговор № 2
В тестовете ми изглежда, че това е последният мач gsub
има. Така например, ако имам това:
"Hello, world!".gsub(/o./, "a")
$&
ще бъде настроен на or
, защото това е последният мач gsub
срещнали.
1 за отговор № 3
$&
е низът, който е съвпадал с последния успешен регекс. Например:
foobar = "foobar"
regex = /b.{2}/
if regex.match(foobar) then
puts $& # -> bar
end