Skip to main content

ログ取得ツール (移転先予定地)

テスト

練習。小括弧()を使わなくてもある程度までプログラムを書けるんだなぁ。Lispと対比して何かひとこと言う必要ある?

[pyg language=“ruby”] #! /usr/bin/ruby

tbl=[]

STDIN.readlines.each do |l| tbl.push l.strip.split end

lens=[] tbl.each do |row| row.each_with_index do |col, i| begin if col.length > lens[i] then lens[i]=col.length end rescue NoMethodError, ArgumentError lens.push col.length end end end

tbl.each do |row| l=[] row.each_with_index do |col, i| l.push col.rjust lens[i] end puts l.join " " end [/pyg]

ある種すごいと思ったのは、配列要素の初期値がnilなので存在しないインデックスを指定するとnilが返ってくるところ。Python時代は例外が発生するからね。ただし、awkなら0と"“の両方として使えるのでいきなり++とかしても数えたりつなげたり処理できるが、Rubyはそうはいかず、nilとintの演算で例外が発生する。結局if文を入れるか例外を拾うかのどちらか…

そして、nil > 10 はNoMethodError、10 > nilはArgumentError例外が発生する。違うんだこれが。