Hi List, Warning, this is a long post!
As often while coding some practical actions, I am faced with fundamentals questions. I have some workarounds available, and it is not a matter of doing things. What matters is understanding fully what I am doing and there is no better place to ask... The context. My final purpose is to store in a block some faces from a layout. These faces are extracted from the layout with something like this: foreach face favorite/pane [ if 'fav = face/user-data [append my-favorite :face] ] The idea is to be able to get to these faces without the need of a variable. For now and as far as I can tell it works but ... In a previous version of my code, I was not using the get-word :face but just [append my-favorite face] ... and it was working the same (AFAICT). So my questions are: - Do I need the get-word? - Is there a difference in the result? To investigate on this matter, I have tried the following console session: >> a: "Hello" == "Hello" >> b: "world!" == "world!" ; ; this is my fake pane ; >> fakepane: reduce [a b] == ["Hello" "world!"] ; ; I am going to build two copies of fakepane ; >> copypane1: copy [] == [] >> copypane2: copy [] == [] ; ; one copy without using the get-word ; >> foreach f fakepane [append copypane1 f] == ["Hello" "world!"] ; one copy with the get-word >> foreach f fakepane [append copypane2 :f] == ["Hello" "world!"] ; ; I am changing 'a the wrong way ; >> a: "Salut" == "Salut" ; ; There are no changes in any block ; >> fakepane == ["Hello" "world!"] >> copypane1 == ["Hello" "world!"] >> copypane2 == ["Hello" "world!"] ; ; I think I understand this: ; a now points to a new location holding the string "Salut" ; but the block still point to the old location where the string "Hello" is. ; ; ; a smarter change (I think) ; >> >> clear b == "" >> append b "Le monde!" == "Le monde!" ; ; now all blocks are changed ; >> fakepane == ["Hello" "Le monde!"] >> copypane1 == ["Hello" "Le monde!"] >> copypane2 == ["Hello" "Le monde!"] ; ; what is the difference between copypane1 copypane2 ; ; there are not the same ; that I understand as they are not sharing the same location in memory >> same? copypane1 copypane2 == false ; but there are equal ; that I understand as the contents are identical >> equal? copypane1 copypane2 == true ; contents are equal and the same >> same? copypane1/1 copypane2/1 == true >> same? copypane1/2 copypane2/2 == true >> equal? copypane1/1 copypane2/1 == true >> equal? copypane1/2 copypane2/2 == true two syntaxes, the same results, what am I missing ? Regards Patrick -- To unsubscribe from this list, just send an email to [EMAIL PROTECTED] with unsubscribe as the subject.