/ / Какво означава "$ &" означава в Ruby - рубин, синтаксис, глобални променливи

Какво означава "$ &" в Ruby - рубин, синтаксис, глобални променливи

Забелязвам един код код в библиотеката 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