開発環境
- Mac OS X Snow Leopard (OS)
- TextWrangler(Text Editor) (いずれはBBEditを入手したい!)
- Script言語:Perl
『続・初めてのPerl 改訂版』(Randal L. Schwartz, brian d foy, Tom Phoenix 著、伊藤 直也、田中 慎司、吉川 英興 監訳、株式会社ロングテール/長尾 高弘 訳、オライリー・ジャパン、2006年、ISBN4-87311-305-9) の11章(オブジェクト入門), 11.11(練習問題)、2を解いてみる。
2.
コード(TextWrangler)
#!/usr/bin/perl use strict; use warnings; { package LivingCreature; sub speak{ my $class = shift; if(@_){ print "a $class goes \"@_\"\n"; }else{ print "a $class goes ", $class->sound, "!\n"; } } } { package Animal; @Animal::ISA = qw(LivingCreature); sub speak{ my $class = shift; # 小動物は話は出来ないと表示 if (@_){ print "a $class can't speak!\n"; } else { # 小動物の鳴き声を出力 $class->SUPER::speak; } } } { package Person; @Person::ISA = qw(LivingCreature); # ハミング sub sound{ 'hum' } } { package Cow; @Cow::ISA = qw(Animal); sub sound{ 'moooo' } } { package Horse; @Horse::ISA = qw(Animal); sub sound{ 'neigh' } } { package Sheep; @Sheep::ISA = qw(Animal); sub sound{ 'baaaah' } } { package Mouse; @Mouse::ISA = qw(Animal); sub sound{ 'squeak' } sub speak{ my $class = shift; if (@_){ print "a $class can't speak!\n"; } else { $class->SUPER::speak; print "[but you can barely hear it!]\n"; } } } # 問題の試行 # 言うべきことを与えないでPersonを呼び出し my $message="Hello, World!"; Person->speak; # 言うべきことを与えてPersonを呼び出し Person->speak($message); # 一応他の小動物も確認 my @animals = qw(Cow Horse Sheep Mouse); foreach (@animals){ # 引数を与えない場合(soundが呼び出される) $_->speak; # 引数を与えた場合(話はできない) $_->speak($message); }
入出力結果(Terminal)
0 コメント:
コメントを投稿