2010-01-16 20 views

Odpowiedz

25

w Ruby, struny są zmienne. Oznacza to, że wartość łańcucha może zostać zmieniona, a nie tylko zastąpiona innym obiektem. x << y faktycznie doda ciąg y do x, a x + y utworzy nowy ciąg i zwróci go.

ten może być badany jedynie w interpreter Ruby

irb(main):001:0> x = "hello" 
=> "hello" 
irb(main):002:0> x << "there" 
=> "hellothere" 
irb(main):003:0> x 
=> "hellothere" 
irb(main):004:0> x + "there" 
=> "hellotherethere" 
irb(main):005:0> x 
=> "hellothere" 

Warto zauważyć, że widać, że x + "there" powrócił „hellotherethere”, ale wartość x była niezmieniona. Uważaj na zmienne struny, mogą przyjść i cię ugryźć. Większość innych zarządzanych języków nie ma łańcuchów zmiennych.

Należy również zauważyć, że wiele metod na ciąg ma zarówno niszczące, jak i nieniszczące wersje: x.upcase zwróci nowy ciąg zawierający wielką literę x, pozostawiając tylko x; x.upcase! zwróci wartość pisaną dużymi literami -i zmodyfikuje obiekt wskazywany przez x.

+1

Doskonałe wyjaśnienie. x = "Wiele"; x << "dzięki!" –

+4

BTW: Dotyczy to również większości innych obiektów kolekcji w języku Ruby. "Tablica # <<" jest dołączana przez mutowanie, 'Tablica # +' jest dołączana przez utworzenie nowej tablicy. 'Set # <<' dodaje element do zestawu, 'Set # +' jest ustawiony union. I tak dalej. –

Powiązane problemy