DATA変数と__END__トークンがテストに便利
今回は、ちょっとしたRubyプログラムのテストに便利なDATA変数の使い方のメモです。
DATA変数とは
Rubyプログラムファイルに__END__トークンだけの行が含まれている場合、その次の行以降にアクセスする為のストリームとしてDATA変数が定義されます。
この機能を使うと、paizaやCodeIQの課題なんかでよくある複数行の標準入力データを処理するプログラムを作る際に非常に便利だったりします。
__END__トークン以降に、テストしたいデータを貼り付けておけば、いちいち実行してからコンソールにデータを貼り付けるなんて面倒な事せずに済みますから!
使い方
というわけで、複数行の入力データを元にHashを作るという簡単な実装例を作ってみました。
プログラム
$_input = DATA #標準入力に切り替える場合、STDINに変更する h = {} while line = $_input.gets do (k, n) = line.split(" ") h.store(k, n) end p h __END__ 1 apple 2 orange 3 lemon 4 banana
実行結果
{"1"=>"apple", "2"=>"orange", "3"=>"lemon", "4"=>"banana"}