2012-09-09 4 views
0

Quelle structure est créée comme suit en Perl?Accolades pour un hachage

my $self = { Name => $name, Color => $class->default_color }; 

Si c'est un hachage, puis est la notation officielle non les suivantes (entre parenthèses, % au lieu de $):

my %self = (Name => $name, Color => $class->default_color); 
+1

http://stackoverflow.com/questions/1817394/quoi-la-différence-entre-un-hachage-et-hash-référence-en-perl –

+0

Real 'man perldata' –

+0

Je prends que vous lisez [Intermédiaire Perl] (http: // www .intermediateperl.com). :) –

Répondre

5

Les données { ... } est une référence de hachage.

Les données dans (...) sont une liste, mais le contexte en fait un hachage.

3

Eh bien, il est encore un hachage - mais un anonyme. Et sa référence est affectée à $self. The doc dit:

Une référence à un hachage anonyme peut être créé à l'aide des accolades:

$hashref = {  
    'Adam' => 'Eve',  
    'Clyde' => 'Bonnie', 
}; 
3

Perl n'a pas de représentation littérale d'un hachage, donc nous créons un hachage comme une liste de paires clé-valeur. Le constructeur de hachage anonyme ou l'affectation au hachage nommé convertit la liste des paires clé-valeur en hachage.

La première ligne crée une référence de hachage qui vous attribuez à une variable scalaire:

my $self = { Name => $name, Color => $class->default_color }; 

La ligne du bas attribue une liste à une table de hachage:

my %self = (Name => $name, Color => $class->default_color);