[ruby-de] Gleiche ungleiche Strings

Marvin Gülker m-guelker at phoenixmail.de
So Sep 3 18:54:05 JST 2017


Hallo Leute,

ich bin gerade über ein interessantes Verhalten von Ruby gestolpert. Es
handelt sich um zwei inhaltlich identische Strings, die aber von
#inspect unterschiedlich behandelt werden. Beispiel:

    % irb
    irb(main):001:0> RUBY_DESCRIPTION
    => "ruby 2.2.6p396 (2016-11-15 revision 56800) [x86_64-linux]"
    irb(main):002:0> a = "\x1F"
    => "\u001F"
    irb(main):003:0> b = 31.chr
    => "\x1F"
    irb(main):004:0> a.bytes
    => [31]
    irb(main):005:0> b.bytes
    => [31]
    irb(main):006:0> puts a.inspect
    "\u001F"
    => nil
    irb(main):007:0> puts b.inspect
    "\x1F"
    => nil
    irb(main):008:0> a == b
    => true
    irb(main):009:0> a.eql?(b)
    => true

Wie kann es sein, daß #inspect die Variable „a“ als „\u001F“ darstellt,
die Variable „b“ dagegen als „\x1F“? Mir ist bewußt, daß damit kein
inhaltlicher Unterschied verbunden ist, aber mich interessiert, weshalb
die Notation durch #inspect anders ist, wo doch die beiden Strings auf
Byteebene tatsächlich identisch sind.

Marvin

-- 
ruby-de-Admin

Blog: https://www.guelkerdev.de
PGP/GPG ID: F1D8799FBCC8BC4F


Mehr Informationen über die Mailingliste ruby-de