Сравнение строк Ruby с захватом регулярных выражений

Я новичок в рубине, и это могут быть какие-то базовые вещи, но это просто сводит меня с ума.

Как возможно следующее?

    (rdb:1) display $2
    26: $2 = "Alien"

    (rdb:1) display $2 == "Alien"
    27: $2 == "Alien" = false

    (rdb:1) display $2.equal? "Alien"
    28: $2.equal? "Alien" = false

    (rdb:1) display $2.strip.chomp.equal? "Alien"
    29: $2.strip.chomp.equal? "Alien" = false

    (rdb:1) display $2.class
    30: $2.class = String

Руби 1.9.3p125, Рельсы 3.1.0, Огурец 1.1.8


person Grozz    schedule 28.03.2012    source источник
comment
Это происходит в IRb и т. д. или только в ruby-debug?   -  person Andrew Marshall    schedule 28.03.2012
comment
Возможно, вам следует использовать ( и ) только для того, чтобы убедиться, что вы хотите проверить? Ruby пытается угадать (ну, здесь не то слово), что вы хотите сказать, но использование ( делает это намного яснее.   -  person mliebelt    schedule 28.03.2012
comment
@AndrewMarshall в ruby-debug, а также при запуске самого кода без отладки   -  person Grozz    schedule 28.03.2012


Ответы (1)


(rdb:1) display $2[0]
2: $2[0] = "

Тайна разгадана.

person Grozz    schedule 28.03.2012
comment
В общем, когда очевидное сравнение строк не удается, я смотрю на... 1. первый символ, 2. последний символ и 3. длину, чтобы увидеть, есть ли в строке какие-то непечатаемые символы или другие общие дурацкость. - person Bob Gilmore; 28.03.2012