/ / Que signifie “$ &” en Ruby - Ruby, syntaxe, variables globales

Que signifie “$ &” en Ruby - Ruby, syntaxe, variables globales

Je remarque un code de ligne dans la bibliothèque Spree:

label_with_first_letters_capitalized = t(options[:label]).gsub(/bw/)#{$&.upcase}

quelqu'un pourrait-il me dire ce que signifie "$ &"? Merci!

Réponses:

8 pour la réponse № 1

Voici une référence à certaines de ces variables spéciales autorisées dans ruby. Fondamentalement, celui-ci retourne quelle que soit la dernière correspondance de motif.

De la page liée:

$& contient la chaîne correspondante de la correspondance de modèle réussie précédente.

>> "the quick brown fox".match(/quick.*fox/)
=> #<MatchData:0x129cc40>
>> $&
=> "quick brown fox"

3 pour la réponse № 2

Lors de mes tests, il semble que ce soit le dernier match que gsub eu. Donc, par exemple, si j'ai ceci:

"Hello, world!".gsub(/o./, "a")

$& serait mis à or, parce que c'est le dernier match qui gsub rencontré.


1 pour la réponse № 3

$& est la chaîne associée à la dernière expression rationnelle réussie. Par exemple:

foobar = "foobar"
regex = /b.{2}/

if regex.match(foobar) then
puts $&    # -> bar
end