Gotanda.pm #16
postfix dereferenceపఈ߈ུ@mackee_w a.k.a macopyGotanda.pm #16
View Slide
୭ˠ• twitter: @mackee_w• GitHub: mackee• kuiperbelt/kuiperbelt : WebSocketศར܅• ࠷ۙPerl Hackers Hubʹςετͱ͔ͷهࣄΛॻ͍ͨ
postfixdereferenceͬͯԿ
postfix dereference$hashref->%*$arrayref->@*
ղઆ
postfix dereference%{$hashref}||$hashref->%*
postfix dereference@{$arrayref}||$arrayref->@*
postfixɹ= έπʹͭ͘dereferenceɹ= σϦϑΝϨϯεུ: postderef
֗ͷಡΊͳ͍ ͜Εศརʂ
ϝϦοτ
ϝϦοτ• ߦͬͯʙฦͬͯͬͯͳΒͳ͍%{$aaa->{bbb}}$aaa->{bbb}->%*1 2 3 45 6 71 2 3 4 5 6
σϝϦοτ
……ͳΜͰه߸૿ͪ͠Όͬͨͷʁ
͓٬༷ɺه߸૿͓ͯ͠Γ·ͤΜɺه߸ͷΈ߹ΘͤΛ૿͚ͨͩ͠ͳͷͰ͢……
Έ߹Θͤ……
୭͕*͚ͩͩͱݴͬͨ
hash slicingmy $hashref ={ k1 => "v1", k2 => "v2", k3 => "v3" };# ී௨ͷσϦϑΝϨϯε͔ΒͷϋογϡεϥΠεmy ($v1, $v3) = @{$hashref}{qw/k1 k3/};# postderefͰϋογϡεϥΠεmy ($v1, $v3) = $hashref->@{qw/k1 k3/};
࣮࣭JSͷobjectdestructuringͰʁʁʁ※ӈลʹॻ͔ͳ͍ͱ͍͚ͳ͍ͷͰҧ͍·͢https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment
·ͱΊ• ʢͱख͕֮͑Εʣศར• *͚ͩͰͳ͍ɻΉ͠ΖͦΕҎ֎͕ศར• v5.24͔Βexperimental֎Εͨɻ͑·͢ʂʂʂʂ• ࠓճͷίʔυશ෦use v5.24.0;ͯ͠·͢
http://perldoc.jp/docs/perl/5.24.0/perl5240delta.pod
postderef_qqͬͯͳʹ
postderef_qqmy $hashref ={ k1 => “v1",k2 => "v2",k3 => "v3" };print "[$hashref->@{qw/k1 k3/}]\n";# => [v1 v3]
ͳΔ΄Ͳͳʁ
csvΈ͍ͨʹग़ͨ͠Γmy @columns = qw/c1 c2 c3/;my $data = [{ c1 => "aa", c2 => "bb", c3 => "cc" },{ c1 => "dd", c2 => "ee", c3 => "ff" },{ c1 => "gg", c2 => "hh", c3 => "ii" },];$" = ",";print "@columns\n";print "$_->@{@columns}\n" for @$data;
csvΈ͍ͨʹग़ͨ͠Γ$ perl postderef.plc1,c2,c3aa,bb,ccdd,ee,ffgg,hh,ii
Ͳ͏Αʁʁʁʁ
ײ• ϫϯϥΠφʔͱ͔Ͱศརͦ͏• jqͷΘΓʹ͏ͱ͔• ͱ͍͑·ͣv5.24ʹ্͛Δͱ͜Ζ͔Β……