2011-06-22 44 views
8

Zauważyłem jedną linię kodu w bibliotece spree:

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

może ktoś mi powiedzieć, co robi „$ &” oznacza? dzięki!

Odpowiedz

8

Oto reference to some of those special variables allowed in ruby. Zasadniczo ten zwraca wszystko, co było ostatnim dopasowaniem wzorca.

Od połączonej strony:

$& zawiera dopasowany ciąg z poprzednim wzorem udanego meczu.

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

Ten link jest zły – ebrohman

+0

@ebrohman dzięki, aktualizowany link Wayback wersję archiwum. – drharris

+0

@drharris: czy w odpowiedzi można również umieścić odpowiednią część strony w odpowiedzi? –

3

W moich testów, wydaje się być ostatni mecz, który gsub dostał. Tak na przykład, jeśli mam to:

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

$& będzie ustawiony na or, ponieważ jest to ostatni mecz, który gsub spotkałem.

1

$& to ciąg, który został dopasowany przez ostatnie pomyślne wyrażenie regularne. Na przykład:

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

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