Strings und Records werden außerdem IMMER als Referenz übergeben. Insofern ist es völlig belanglos, welche dieser Routinen man benutzt, der Code ist in jedem Fall identisch:
Hier muss man schon aufpassen. Im Falle eines nicht-
const/var/out
Strings wird keine direkte Referenz übergeben, sondern lokal ein neuer mutable String erzeugt. Ansonsten würde man ja die übergebene Instanz modifizieren können - was definitiv unerwünscht ist. Auch im Falle von Record stimmt es NICHT, dass immer Referenzen übergeben werden. Das hängt mitunter z.B. von der Record-Größe ab. Selbst ein
const
garantiert hier nicht zu 100% Referenzen! Musste ich selbst noch die Tage nachlesen.