Drkcore

24 04 2007 perl Tweet

newするときにデフォルト値をもたせるというか、perlのハッシュのこと

404 Blog Not Found:perl - 万能なnewの書き方

しかし、デフォルト値を持たせたければどうすればよいか、こうすればよい。

bless { %default, @_ }, $class;

これでなんでうまくいくのかよくわからなかったのでperlshでいろいろ動かしてみた。

main[61]$ %a = (name => 'anon', pet => 'none')
name
anon
pet
none
main[62]$ %b = (name => 'kzfm', pet => 'hana')
name
kzfm
pet
hana
main[63]$ %c = (name => 'yuki')
name
yuki
main[64]$ $d = bless {%a,%b}
main=HASH(0xa123ce8)
main[65]$ print Dumper($d)
$VAR1 = bless( {
                 'pet' => 'hana',
                 'name' => 'kzfm'
               }, 'main' );
1
main[66]$ $g = bless {%a,%c}
main=HASH(0xa123e94)
main[67]$ print Dumper($g)
$VAR1 = bless( {
                 'pet' => 'none',
                 'name' => 'yuki'
               }, 'main' );
1

別にblessせんでも

main[77]$ $d = {%a,%b}
HASH(0xa123ce8)
main[78]$ print Dumper($d)
$VAR1 = {
          'pet' => 'hana',
          'name' => 'kzfm'
        };
1
main[79]$ $g = {%a,%c}
HASH(0xa123d24)
main[80]$ print Dumper($g)
$VAR1 = {
          'pet' => 'none',
          'name' => 'yuki'
        };
1

うーん、思った通りに動いている。というわけで、一度アレイにしてみる。

main[88]$ $d = [%a,%b]
ARRAY(0xa123fd8)
main[89]$ print Dumper($d)
$VAR1 = [
          'pet',
          'none',
          'name',
          'anon',
          'pet',
          'hana',
          'name',
          'kzfm'
        ];
1

ちゃんとアレイができているので、これをハッシュのリファレンスにしてみる。

main[90]$ $x = {@{$d}}
HASH(0xa124080)
main[91]$ print Dumper($x)
$VAR1 = {
          'pet' => 'hana',
          'name' => 'kzfm'
        };
1

おー、思ったとおり。

アレイからハッシュにするときにインデックス値の小さい順に評価されていって、同じキー値を持つものは上書きされていくのか。

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021