開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの機能制限無料版、light版)
- Script言語:Perl
『初めてのPerl 第6版』(Randal L. Schwartz, Tom Phoenix, brian d foy 共著、近藤 嘉雪 訳、オライリー・ジャパン、2012年、ISBN978-4-87311-567-2)の4章(サブルーチン)、4.12(練習問題)5を解いてみる。
その他参考書籍
5.
コード(BBEdit)
sample.pl
#!/usr/bin/env perl use strict; use warnings; use utf8; use 5.016; binmode STDOUT, ':utf8'; binmode STDIN, ':utf8'; sub greet { my $name = shift; state @last; if (@last) { print "Hi ${name}! I've seen: @last\n"; } else { print "Hi ${name}! You are the first one here!\n"; } push @last, $name; } greet( "Fred" ); greet( "Barney" ); greet( "Wilma"); greet( "Betty" );
入出力結果(Terminal)
$ ./sample.pl Hi Fred! You are the first one here! Hi Barney! I've seen: Fred Hi Wilma! I've seen: Fred Barney Hi Betty! I've seen: Fred Barney Wilma $
ちなみにJavaScriptの場合。
コード(BBEdit)
$('#pre0').text(""); // JavaScriptで同様の事を実現する場合はクロージャーっていうのを使えばいいのかな。。 // (Perlではクロージャ使ってないけど) var greet = (function () { var last = []; return function(name) { if (last.length) { $('#pre0').append("Hi " + name + "! I've seen: " + last.join(" ") + "\n"); } else { $('#pre0').append("Hi " + name + "! You are the first one here!\n"); } last.push( name ); }; })(), names = ["Fred", "Barney", "Wilma", "Betty"], i, max; for (i = 0, max = names.length; i < max; i += 1) { greet(names[i]); }
pythonの場合。
コード(BBEdit)
sample.py
#!/usr/bin/env python3.3 #-*- coding: utf-8 -*- class C: last = [] def greet(self, name): if C.last: print("Hi {0}! I've seen: {1}".format(name, " ".join(C.last))) else: print("Hi {0}! You are the first one here!".format(name)) C.last.append( name ) c = C() for name in ["Fred", "Barney", "Wilma", "Betty"]: c.greet( name )
入出力結果(Terminal)
$ ./sample.py Hi Fred! You are the first one here! Hi Barney! I've seen: Fred Hi Wilma! I've seen: Fred Barney Hi Betty! I've seen: Fred Barney Wilma $
0 コメント:
コメントを投稿