開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- Script言語:Perl
その他参考書籍
2.
コード(BBEdit)
sample.pl
#!/usr/bin/env perl use strict; use warnings; use utf8; use 5.016; binmode STDOUT, ':utf8'; binmode STDIN, ':utf8'; { package LivingCreature; sub speak { my $class = shift; if (@_) { print "a $class goes @_\n"; } else { print "a $class goes ", $class->sound, "\n"; } } } { package Person; our @ISA = qw(LivingCreature); sub sound { 'hummmm' } } { package Animal; our @ISA = qw(LivingCreature); sub sound {die "動物のsoundを定義し忘れてる!";} sub speak { my $class = shift; die "ドリトル博士ではないので動物と話すことはできない。" if @_; $class->SUPER::speak; } } { package Cow; our @ISA = qw(Animal); sub sound { "moooo" } } { package Horse; our @ISA = qw(Animal); sub sound { "neigh" } } { package Sheep; our @ISA = qw(Animal); sub sound { "baaaah" } } { package Mouse; our @ISA = qw(Animal); sub sound { "squeak" } sub speak { my $class = shift; Animal::speak($class); print "[but you can barely hear it!]\n"; } } Person->speak; Person->speak("Hello, World!");
入出力結果(Terminal)
$ ./sample.pl a Person goes hummmm a Person goes Hello, World! $
ちなみにJavaScriptの場合。
コード(BBEdit)
$('#pre0').html(''); var LivingCreature = function() {}, Person = function () {}, Animal = function () {}, Cow = function () {}, Horse = function () {}, Sheep = function () {}, Mouse = function () {}, living_creatures = {"Person":Person, "Cow":Cow, "Horse":Horse, "Sheep": Sheep, "Mouse":Mouse}, $select = $('#living_creature'), result = "", said = $('#said').val(), living_creature; LivingCreature.prototype.o = "LivingCreature"; LivingCreature.prototype.speak = function (a) { if (a) { $('#pre0').append("a " + this.o + " goes " + a + "\n"); } else { $('#pre0').append("a " + this.o + " goes " + this.sound + "!\n"); } }; Person.prototype = new LivingCreature(); Person.prototype.o = "Person"; Person.prototype.sound = "hummmm"; Animal.prototype = new LivingCreature(); Animal.prototype.o = "Animal"; Animal.prototype.speak = function () { if (arguments.length > 0 ) { throw { type: "エラー", message: "ドリトル博士ではないので動物と話すことは出来ない" }; } LivingCreature.prototype.speak.apply(this); }; Animal.prototype.constructor = Animal; Cow.prototype = new Animal(); Cow.prototype.o = "Cow"; Cow.prototype.sound = "moooo"; Horse.prototype = new Animal(); Horse.prototype.o = "Horse"; Horse.prototype.sound = "neigh"; Sheep.prototype = new Animal(); Sheep.prototype.o = "Sheep"; Sheep.prototype.sound = "baaaah"; Mouse.prototype = new Animal(); Mouse.prototype.o = "Mouse"; Mouse.prototype.sound = "squeak"; Mouse.prototype.speak = function () { Animal.prototype.speak.apply(this, arguments); $('#pre0').append("[but you can barely hear it!]\n"); }; try{ living_creature = $('option:selected', $select).text(); living_creature = new living_creatures[living_creature](); if (said) { living_creature.speak(said); } else { living_creature.speak(); } } catch(e) { $('#pre0').text(e.type + ": " + e.message); }
pythonの場合。
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- class LivingCreature: def speak(self, a=""): if a: print("a {0} goes {1}".format(self.name, a)) else: print("a {0} goes {1}!".format(self.name, self.sound)) class Person(LivingCreature): name = "Person" sound = "hummmm" class Animal(LivingCreature): name = "Animal" sound = "鳴き声" def speak(self, a=""): if a != "": raise Exception("ドリトル博士ではないので動物と離す事は出来ません") LivingCreature.speak(self) class Cow(Animal): name = "Cow" sound = "moooo" class Horse(Animal): name = "Horse" sound = "neigh" class Sheep(Animal): name = "Sheep" sound = "baaaah" class Mouse(Animal): name = "Mouse" sound = "squeak" def speak(self): Animal.speak(self) print("[but you can barely hear it!]") p = Person() p.speak() p.speak("Hello, World!")
入出力結果(Terminal)
$ ./sample.py a Person goes hummmm! a Person goes Hello, World! $
0 コメント:
コメントを投稿