|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
The snippet illustrates my question.
a={} b={} a["alpha"]=b["alpha"]=[] a["alpha"]<<23 b["alpha"]<<100 puts a["alpha"] puts b["alpha"] Here a["alpha"] and b["alpha"] both contain an array of [23,100]. Why?? If I remove the multiple assignment, a={} b={} a["alpha"]=[] b["alpha"]=[] a["alpha"]<<23 b["alpha"]<<100 puts a["alpha"] puts b["alpha"] a["alpha"] contains 23 and b["alpha"] contains 100 as I expected. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
On Mon, Sep 17, 2007, Mukund wrote:
> Here a["alpha"] and b["alpha"] both contain an array of [23,100]. > Why?? It's this line, right here. > a["alpha"]=b["alpha"]=[] What's happening is the a["alpha"] is getting the result of b["alpha"]=[], which is the empty array on the far-right of the assignment. Both a["alpha"] and b["alpha"] contain a reference to the same array. > If I remove the multiple assignment, > a["alpha"]=[] > b["alpha"]=[] a["alpha"] and b["alpha"] now are both references to *different* empty arrays. Hope that s ![]() Ben |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
On 9/16/07, Mukund <maruthim@yahoo.com> wrote:
> The snippet illustrates my question. > > a={} > b={} > a["alpha"]=b["alpha"]=[] You are assigning a new Array to the key "alpha" in the hash b. The return value from hash assignment is the object stored in the hash -- i.e. the new Array you created. This object is then assigned to the key "alpha" in the hash a. Blessings, TwP |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
Mukund wrote:
> The snippet illustrates my question. > > a={} > b={} > a["alpha"]=b["alpha"]=[] > a["alpha"]<<23 > b["alpha"]<<100 > puts a["alpha"] > puts b["alpha"] > > Here a["alpha"] and b["alpha"] both contain an array of [23,100]. > Why?? > > If I remove the multiple assignment, > a={} > b={} > a["alpha"]=[] > b["alpha"]=[] > a["alpha"]<<23 > b["alpha"]<<100 > puts a["alpha"] > puts b["alpha"] > > > a["alpha"] contains 23 and b["alpha"] contains 100 as I expected. > > Because, in the first case, both a["alpha"] and b["alpha"] refer to the same array. You simply have two different ways of referring to it. In the second case, the code constructs two different arrays. -- RMagick OS X Installer [http://rubyforge.org/projects/rmagick/] RMagick Hints & Tips [http://rubyforge.org/forum/forum.php?forum_id=1618] RMagick Installation FAQ [http://rmagick.rubyforge.org/install-faq.html] |
|
![]() |
| Outils de la discussion | |
|
|