Dlaczego przechwytywanie nazwanych grup w Ruby powoduje błędy „niezdefiniowanej zmiennej lokalnej lub metody”?
Mam problemy z nazwanymi przechwytami w wyrażeniach regularnych w Ruby 2.0. Mam zmienną łańcuchową i interpolowane wyrażenie regularne:
str = "hello world"
re = /\w+/
/(?<greeting>#{re})/ =~ str
greeting
Wywołuje następujący wyjątek:
prova.rb: 4: in<main>': undefined local variable or method
greeting 'dla main: Object (NameError)
zwrócona powłoka 1
Jednak wyrażenie interpolowane działa bez nazwanych przechwytów. Na przykład:
/(#{re})/ =~ str
$1
# => "hello"