On Apr 24, 11:47 am, Florian Gilcher <f... / andersground.net> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>
>
> >  class TestAppend
> >    attr_accessor :text
>
> >    def initialize(attributes = {})
> >      @text = "Start of string"
> >    end
>
> >    def get_some_value
> >      value = @text
> >      value << '-New Value'
> >      return value
> >    end
>
> >  end
>
> value = @text does not copy the string and << doesn't return a string
> but modifies the receiver in place.
>
> What you are doing is getting a reference to @text which just has
> another name. Then you modify @text by using << on value (which is the
> same object as @text).
>
> If you do not wish to modify @text, use "+" or string interpolation.
>
> ===code===
> def get_some_value
>    @text + "-New Value" #dies if @text == nil
> end
> #or
> def get_some_value
>    "#{@text}-New Value"  #doesn't die, but looks ugly if @text == nil
> end
> ===code===
>
> Regards,
> Florian Gilcher
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.8 (Darwin)
>
> iEYEARECAAYFAkgQ1dcACgkQJA/zY0IIRZa6kQCeLJ8P6Dz1Gj9WBUWM73n0LGcU
> 0McAnjzeEwBTNtYBkJatMDKMORNcdO/f
> =WEi6
> -----END PGP SIGNATURE-----

Thank you for the explanation.

Philippe