開発環境
- 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 コメント:
コメントを投稿