Ja...y esta?

irb(main):034:0> r = /\141/
=> /\141/
irb(main):035:0> r.hash
=> 473091087
irb(main):036:0> r =~ "a"
=> 0
irb(main):037:0> r.hash
=> -1048226273

141 es ASCII (es la letra 'a'), aún así tiene el mismo problema. Me
parece que no viene por el lado del encoding la cosa, es un tema de
usar valores octales y hexadecimales en vez de caracteres.

(sorry por el multi-mensaje)

2009/7/10 Bruno Deferrari <[email protected]>:
> Otra más:
>
>> res = [/\xc3\x81/, /\303\201/, /Á/]
> => [/\xc3\x81/, /\303\201/, /\303\201/]
>> res.map &:hash
> => [527397363, -279873034, 141541]
>> res.each {|re| re =~ "hola"}
> => [/\xc3\x81/, /\303\201/, /\303\201/]
>> res.map &:hash
> => [404259843, -403010554, 141541]
>
> y
>
> irb(main):014:0> res = [/\xc3\x81/u, /\303\201/u, /Á/u]
> => [/\xc3\x81/u, /\303\201/u, /\303\201/u]
>> res.map &:hash
> => [527397363, -279873034, 429037]
>> res.each {|re| re =~ "hola"}
> => [/\xc3\x81/u, /\303\201/u, /\303\201/u]
>> res.map &:hash
> => [404259843, -403010554, 429037]
>
> Solo la versión con 'Á' cambia de hash al usar 'u' como modificador.
>
> 2009/7/10 Bruno Deferrari <[email protected]>:
>> 2009/7/10 Pablo Herrero <[email protected]>:
>>> Lo unico que creo q deberia de considerase bug es que /\303\200/u != /À/u
>>
>> Mirate esto:
>>
>> irb(main):001:0> [/\303\201/.source, /Á/.source]
>> => ["\\303\\201", "\303\201"]
>>
>> La documentación dice:
>> "Equality—Two regexps are equal if their patterns are identical, they
>> have the same character set code, and their casefold? values are the
>> same."
>>
>> Mi pregunta es, deberían considerarse idénticos (que no es lo mismo
>> que equivalentes) esos 2 patrones?
>>
>
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a