Hello, I am new to smalltalk and I would really appreciate your help so I can
better use and understand Pharo. 

So here is the problem, I wanted to implement a function to get the value of
my tree struct nodes in a recursive manner and I wanted to concatenate them
to a String ( aText ) and later show them on the Transcript. 


showLists 
        | aText | 
         aText  :=  lol level,  (String with: Character cr). 
        self recursiveShowLists: lol withText: aText tabsNumber: 1. 




recursiveShowLists: aLoL withText: aText tabsNumber: aNumb 
        | counter index | 
        aLoL lols isEmpty 
                ifFalse: [ 
                        counter := 1. 
                        [ counter <= aNumb ] 
                                whileTrue: [ 
                                        aText := aText , (String with:
Character tab). 
                                        counter := counter + 1 ]. 
                        index := 1. 
                        aNumb := aNumb + 1. 
                        LoL lols do: [ :each | aText := aText , each level ,
(String with: Character cr) ]. 
                        ] 



Without having the last line ( LoL lols do: ... ) everything works fine but
when I include it and as soon as debugger reaches to [counter <= aNumb ] and
wants to evaluate it, my arguments start to act weird. aText will become nil
and aNumb will hold te value of aText! 


I fixed this issue by adding another temporary variable ( copyText ) and
instead of direct assignment of aText I used the copyText: 



recursiveShowLists: aLoL withText: aText tabsNumber: aNumb 
        | counter index copyText | 
        copyText := aText.
        aLoL lols isEmpty 
                ifFalse: [ 
                        counter := 1. 
                        [ counter <= aNumb ] 
                                whileTrue: [ 
                                        copyText := copyText , (String with:
Character tab). 
                                        counter := counter + 1 ]. 
                        index := 1. 
                        aLoL lols do: [ :each | copyText := copyText , each
level , (String with: Character cr) ] ] 



I really like to know the reason behind this issue,  I appreciate all the
explanations.
Thanks,
Aria




--
View this message in context: 
http://forum.world.st/I-need-some-explaination-about-arguements-assignment-tp4772102.html
Sent from the Pharo Smalltalk Users mailing list archive at Nabble.com.

Reply via email to