2014-06-17 7 views
6

Perl kodları:Dinamik değişken değer?

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

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

üretecek:

8 
8 

farklı değeri her zaman elde etmek mümkün mü? Sen tied hash veya işlevini kullanabilirsiniz ya

cevap

10

(int(rand(10)) her zaman denir $config{ randValue } yürütmek):

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

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

Sen * sihirli * veya alt kullanabilirsiniz. 'kravat' sadece bir tür sihirdir. Değişken :: Magic qw (sihirbaz cast) kullanın; cast (benim $ d10, sihirbaz (get => sub {$ {$ _ [0]} = int (rand (10)) + 1})); Bir alt kullanmanızı öneririm. – ikegami

+5

Sadece şu dökümanları okuyan ofiste kahkaha atıyorum: "bir sihirbaz", sihirli bilgileri tutan opak bir nesne "ve" Hiçbir şey fantezi ayarlarında harika alıntılar olsun " Bir sihirbazı serbest büyü ile tanımlar ve kendi üzerine atarsanız, bu bir hafıza döngüsüyle sonuçlanır, böylece sihirbaz serbest bırakıldığında bu yıkıcı aramayacaktır. " destansı bir arayış için backstory gibi geliyor. – DeVadder

İlgili konular