久しぶりRubyだメモ

いかん、しばらくRuby触ってなかったら一行も書けずに身動きできなくなる 程忘れた。オブジェクト指向にかかわるあたりは覚えてるが、標準入力でループ を回すとかそういうイディオム的な部分がさっぱりだ。なので備忘録。

とりあえず、何かPerlでフィルタを書こうってときはこうする。

while (<>) {
  なんちゃら〜
  かんちゃら〜
}

これをどう書くかが思い出せなかったが、Rubyだとこうだ。

while gets
  なんちゃら〜
  かんちゃら〜
end

暗黙の受け取り変数 $_ に入るのはPerlと一緒だがそれを使うと 動作が把握しにくくなるのでこんな風にしてみた。

ln=1
while line=gets
  line.chop!
  case line
  when /REGEXP/
    うおーりゃ
    print "#{ln}: line\n"
  end
  ln+=1
end

てなぐあい。ダブルクォート中の式展開は #{…} で括る。変数だけでなく 任意の式OK。インクリメント演算子(++)は無いらしい、+=で1足すのが最短?

ファイルを開こう。これもオブジェクト指向的書き方ね。ファイル処理とか はドット区切りの書き方は楽かも。

obje = open("ファイル", "r")
while obje.gets
  print
end
obje.close

でも閉じ忘れがないようにてことを考えるとopenにブロックを足してこうか。

open("ファイル", "r") {|obje|
  while obje.gets
    うがあ
    print
  end
}

これだと、うがあ の部分でメソッドからreturnしちゃったりするコードがあって も平気。うーん、どっかにまとめるか。


きまぐれ記
yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]