widzę wiele tego rodzaju to dzieje się w Ruby:Czym różni się <<?
myString = "Hello " << "there!"
Czym się to różni od robienia
myString = "Hello " + "there!"
widzę wiele tego rodzaju to dzieje się w Ruby:Czym różni się <<?
myString = "Hello " << "there!"
Czym się to różni od robienia
myString = "Hello " + "there!"
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.
Doskonałe wyjaśnienie. x = "Wiele"; x << "dzięki!" –
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. –