開発環境
- OS X Lion - Apple(OS)
- BBEdit - Bare Bones Software, Inc.(Text Editor)
- プログラミング言語: Ruby
『初めてのプログラミング 第2版』(Chris Pine 著、長尾 高弘 訳、オライリー・ジャパン、2010年、ISBN978-4-87311-469-9)の 14章(ブロックとproc), 14.4(練習問題)プログラムロガー を解いてみる。
その他参考書籍
- 『プログラミング言語 Ruby』David Flanagan, まつもと ゆきひろ 著 、卜部 昌平 監訳、長尾 高弘 訳、オライリー・ジャパン、2009年、ISBN978-4-87311-394-4)
- Rubyクックブック ―エキスパートのための応用レシピ集
プログラムロガー
コード(BBEdit)
sample.rb
#!/usr/bin/env ruby2.0
#-*- 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)
var $result = $('#pre0'),
log = function( d, fn ) {
var result;
$result.append('"' + d + '"を開始…\n');
result = fn();
$result.append('…"' + d + '"が終了して、戻り値は\n');
$result.append(result + '\n');
};
$result.html('');
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(d,fun):
print("\"{0}\"を開始…".format(d))
res = fun()
print("…\"{0}\"が終了して、戻り値は".format(d))
print(res)
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 myLog{
my($description, $f) = @_;
print "\"$description\"を開始…\n";
my $result = &$f;
print "…\"$description\"が終了して、戻り値は\n";
print "$result\n";
}
myLog( "外側のブロック", sub {
myLog("小さなブロック", sub{ 5 });
myLog("また別のブロック", sub { "私はタイ料理が好き!" });
return 0;
});
入出力結果(Terminal)
$ ./sample.pl "外側のブロック"を開始… "小さなブロック"を開始… …"小さなブロック"が終了して、戻り値は 5 "また別のブロック"を開始… …"また別のブロック"が終了して、戻り値は 私はタイ料理が好き! …"外側のブロック"が終了して、戻り値は 0 $
0 コメント:
コメントを投稿