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