On Apr 24, 11:11 am, Rob Biedenharn <R... / AgileConsultingLLC.com>
wrote:
> On Apr 24, 2008, at 2:00 PM, vann... / gmail.com wrote:
>
> > Hi Guys,
>
> > Is this default ruby behaviour or is this a bug? Based on the number
> > of call to Testappend::get_some_value, the string "-New Value" is
> > appended x number of times. If you first assign value = '' instead of
> > value = @text, the behaviour is different and the "-New Value" string
> > is appended only once.
>
> Do you mean:
>     def get_some_value
>       value = ''
>       value << '-New Value'
>       return value
>     end
>
> If so, where do you do anything with the String object to which @text
> refers?
>
> BTW, you could simplify your original to just:
>     def get_some_value
>       @text << '-New Value'
>     end
>
> -Rob
>
> Rob Biedenharn          http://agileconsultingllc.com
> R... / AgileConsultingLLC.com
>
> > version of ruby: ruby 1.8.6 (2007-03-13 patchlevel 0) [x86_64-linux]
>
> > Thanks.
>
> > Philippe
>
> > -----------------------------------------------------
>
> > module ATest
>
> >  def ATest.main
>
> >    t = TestAppend.new
> >    puts t.get_some_value ==> Start of string-New Value
> >    puts t.get_some_value ==> Start of string-New Value-New Value
> >    puts t.get_some_value ==> Start of string-New Value-New Value-New
> > Value
>
> >  end
>
> >  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
>
> > end
>
> > ATest::main

Rob,

I do not want to assign a new value to @text.
The "get_some_value" function should return a new string (value) which
is a concatenation of strings. In this case a simple concatenation of
@text and "-New Value".

#This version will work and does not append "-New Value" x times based
on the number of function calls.
def get_some_value
       value = ''
       value = @text
       value << '-New Value'
       return value
end

Thank you for your help,

Philippe