開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- Script言語:Ruby
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 14章(block と proc), 14.4(練習問題)プログラムロガー を解いてみる。
その他参考書籍
- 『プログラミング言語 Ruby』David Flanagan, まつもと ゆきひろ 著 、卜部 昌平 監訳、長尾 高弘 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-394-4)
- Rubyクックブック ―エキスパートのための応用レシピ集
プログラムロガー
コード(BBEdit)
sample.rb
#!/usr/bin/env ruby1.9
#-*- coding: utf-8 -*-
def log description, &block
puts "\"#{description}\"を開始"
result = block.call
puts "...\"#{description}\"が終了して、戻り値は"
puts result
end
log "外側のブロック" do
log "小さなブロック" do
5
end
log "また別のグロック" do
"私はタイ料理が好き"
end
false
end
入出力結果(Terminal)
$ ./sample.rb "外側のブロック"を開始 "小さなブロック"を開始 ..."小さなブロック"が終了して、戻り値は 5 "また別のグロック"を開始 ..."また別のグロック"が終了して、戻り値は 私はタイ料理が好き ..."外側のブロック"が終了して、戻り値は false $
ちなみにJavaScriptの場合。
コード(BBEdit)
$('#pre0').html('');
function log( description, f ) {
$('#pre0').append("\"" + description + "\"を開始...\n");
var result = f();
$('#pre0').append("...\"" + description + "\"が終了して、戻り値は\n");
$('#pre0').append(result + "\n");
}
log("外側のブロック", function (){
log("小さなブロック", function(){
return 5;
});
log("また別のブロック", function(){
return "私はタイ料理が好き"
});
return false;
});
pythonの場合。
sample.py
コード(BBEdit)
#!/usr/bin/env python3.3
#-*- coding: utf-8 -*-
def log(description, f):
print("\"{0}\"を開始...".format(description))
result = f()
print("...\"{0}が終了して戻り値は".format(description))
print(result)
def f():
log("小さなブロック", lambda: 5)
log("また別のブロック", lambda: "私はタイ料理が好き")
return False
log("外側のブロック", f)
入出力結果(Terminal)
$ ./sample.py "外側のブロック"を開始... "小さなブロック"を開始... ..."小さなブロックが終了して戻り値は 5 "また別のブロック"を開始... ..."また別のブロックが終了して戻り値は 私はタイ料理が好き ..."外側のブロックが終了して戻り値は False $
perlの場合。
sample.pl
コード(BBEdit)
#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use 5.016;
binmode STDIN, ":utf8";
binmode STDOUT, ":utf8";
sub my_log {
my($description, $f) = @_;
print "\"$description\"を開始...\n";
my $result = &$f;
print "...\"$description\"が終了して、戻り値は\n";
print "$result\n";
}
my_log("外側のブロック", sub {
my_log("小さなブロック", sub {
5;
});
my_log("また別のブロック", sub {
"私はタイ料理が好き";
});
0;
});
入出力結果(Terminal)
$ ./sample.pl "外側のブロック"を開始... "小さなブロック"を開始... ..."小さなブロック"が終了して、戻り値は 5 "また別のブロック"を開始... ..."また別のブロック"が終了して、戻り値は 私はタイ料理が好き ..."外側のブロック"が終了して、戻り値は 0 $
0 コメント:
コメントを投稿