ruby - sintax - slim html
Ruby: ¿Qué significa $ 1? (2)
Estoy viendo un RailsCast sobre asociaciones polimórficas. http://railscasts.com/episodes/154-polymorphic-association?view=asciicast
Hay tres modelos diferentes: artículo, foto y evento, cada uno toma un comentario de Comment.rb. (Artículo, foto y evento, cada uno de un article_id, photo_id y event_id). Al enumerar los comentarios, tiene el problema de averiguar a cuál de los 3 modelos se enumeran los comentarios, por lo que lo hace en la acción de índice
def index
@commentable = find_commentable
@comments = @commentable.comments
end
def find_commentable
params.each do |name, value|
if name =~ /(.+)_id$/
return $1.classify.constantize.find(value)
end
end
nil
end
Mi pregunta es, ¿cuál es $1
?
El $1
es un grupo que coincide con la expresión regular sobre /(.+)_id$/
. La variable $1
es la cadena que coincide entre paréntesis.
Según Avdi Grimm de RubyTapas
$ 1 es una variable global que se puede usar en el código posterior:
if "foobar" =~ /foo(.*)/ then puts "The matching word was #{$1}" end
Salida :
"La palabra coincidente era barra"
En resumen, $ 1, $ 2, $ ... son las variables globales utilizadas por algunas de las funciones de la biblioteca ruby, especialmente relacionadas con REGEX
para que los programadores utilicen los resultados en códigos posteriores.
Vea esto para más variables disponibles en Ruby.