Czy << to tylko lukier składniowy?

No tak każda klasa inaczej może określać swe reguły, w takim razie wrócę do stringa. Czy += to tylko wypadek przy pracy twórców, czy wynika z niego coś praktycznego? Bo w chwili obecnej tą instrukcje uważam za niebezpieczną względem wydajności.

A znacie jakąś prostą sytuację w której to wspomniane kopiowanie musiało nastąpić?

[code=ruby]def fajna_funkcja parametr
parametr += ’ jest fajna’

…i coś tu sobie dalej robi z rozszerzonym parametrem

end

def wydajna_funkcja parametr
parametr << ’ jest niefajna’

…i coś tu sobie dalej robi z rozszerzonym parametrem

end

tekst = ‘funkcja’

fajna_funkcja tekst
puts tekst

wydajna_funkcja tekst
puts tekst[/code]

Nie.

Ojej. Jeśli lubisz przedwczesna optymalizację, to niestety wybrałeś zły język, bo Ruby jest w ogóle strasznie niebezpieczny względem wydajności.

Działanie funkdji operujących na kolekcjach, zazwyczaj sprowadza się do stworzenia nowej, zmodyfikowanej kolekcji. Tak jest z sort(), +=, sub etc. Jest to naleciałość z języków funkcyjnych i trzeba wiedzieć że tak jest, ale masz wersje alternatywne, jak sort!(), << czy sub! i możesz ich używać.