404 Blog Not Found:perl - 勝手に添削 - each vs. spliceへの追記ですまそうと思ったけど、大事なことなのでentryを改めて。
はてなブックマーク - Yuichirouの投げやりクリッピングkeys => sub { my $value; foreach my $key ( keys %hash ) { $value = $hash{$key}; } } # こうじゃないかな?
何度でも違うって、そう言い返せます。
while(my $var){ #… }やforeach my $var () { #… }の$varのスコープはどちらになるでしょう?はい、lleval君!
use strict;
use warnings;
my $k = 'qb';
my $v = 'incubator';
print "outer: $k => $v\n";
my %h = (
m => 'Kriemhild Gretchen',
s => 'Oktavia von Seckendorff',
);
while ( my ( $k, $v ) = each %h ) {
print " while: $k => $v\n";
}
for my $k ( keys %h ) {
my $v = $h{$k};
print " foreach: $k => $v\n";
}
print "outer: $k => $v\n";
そのとおり、どっちでも、内側。
宣言するのが{}の外側なので勘違いしやすいのですが、スコープは{}の内側です。これは私にとってperl++な要素。
Rubyは1.9でPerlと同じになりましたが…
k = 'qb'
v = 'incubator'
print "outer: #{k} => #{v}\n"
h = {
m:'Kriemhild Gretchen',
s:'Oktavia von Seckendorff',
}
h.each{ |k, v|
print " each: #{k} => #{v}\n"
}
print "outer: #{k} => #{v}\n"
Python 3は昔のまま…
k = 'qb'
v = 'incubator'
print("outer:", k, "=>", v)
h = {
'm':'Kriemhild Gretchen',
's':'Oktavia von Seckendorff',
}
for k, v in h.items():
print(" items:", k, "=>", v)
print("outer:", k, "=>", v)
わけがわからないよ!
Dan the Perl Monger
このブログにコメントするにはログインが必要です。
さんログアウト
この記事には許可ユーザしかコメントができません。