2014-06-17 24 views
6

Perl-Code:Dynamischer Variablenwert?

my %config = (
    randValue => int(rand(10)), 
); 

print $config{ randValue }."\n"; 
print $config{ randValue }."\n"; 

produzieren:

8 
8 

Ist es möglich, anderer Wert jedes Mal zu bekommen? (Execute int(rand(10)) jedesmal, wenn die $config{ randValue } genannt wird)

Antwort

10

Sie entweder tied hash verwenden oder Funktion:

my %config = (
    randValue => sub { int(rand(10)) }, 
); 

print $config{randValue}->(); 
print $config{randValue}->(); 
+4

Sie können mit * Magie * oder eine Unter. 'Krawatte' ist nur eine Art von Magie. 'benutze Variable :: Magic qw (Zauberspruch); cast (mein $ d10, wizard (get => sub {$ {$ _ [0]} = int (rand (10)) + 1})); 'Ich empfehle die Verwendung eines Sub. – ikegami

+5

Ich brach einfach im Büro in Gelächter aus und las diese Dokumentation: "Ein 'Zauberer', ein undurchsichtiges Objekt, das die magische Information enthält" und "Beachte, dass freie Magie niemals während der globalen Zerstörung aufgerufen wird". Wenn Sie einen Zauberer mit freier Magie definieren und ihn auf sich selbst anwenden, führt dies zu einem Speicherzyklus, so dass dieser Destruktor nicht aufgerufen wird, wenn der Zauberer befreit wird. " klingt wie die Hintergrundgeschichte zu einer epischen Quest. – DeVadder