「初めての Ruby」一人勉強会6日目
最近少々サボり気味でしたが、Ruby をぼちぼち勉強しています。
教材はコレ↓
初めてのRuby
今日は第5章。入出力
これを読みつつ、つぶやいてみます。
以下、つぶやきメモ。
※1 今のところ、正直あまり Ruby は好きではありません。
※2 オイラがまともにそこそこ書ける言語は C#, Java(5.0より前), Perl です。言語の機能を語っているときはその辺との比較になっているはず
※3 Ruby はまだほとんど理解していないので、的外れでトンチンカンな批判してるかも
※4 コードはサンプルそのままのときと、オイラが勝手に変えてるときがあります
ブロック (p.87 例5-2)
#!/usr/bin/ruby File.open("a.rb") { |f| contents = f.read print contents }
明示的にクローズしなくても、ブロックを抜けると勝手にリソースを開放してくれる。C# の IDisposable + using みたいなもん。オイラは open したらすぐ close 書いて、次に本処理書くようにしているからなぁ。。。まあ言語側でやってくれる方が便利だね。
ファイルからの入力(p.89 例5-5)
#!/usr/bin/ruby File.open("a.rb") { |f| f.each_line do |line| print "#{f.lineno} : #{line}" end }
多分これが一番基本的なファイル読み込みなのでメモメモ。
ARGF (p.92 例5-10)
Perl の <> みたいなもんだね。
ファイル出力
あり?ファイルへの書き込みがなかったや。こんな感じみたい。
#!/usr/local/bin/ruby File.open("aaa.txt", "w") { |f| f.puts("aaa") f.puts("bbb") }
定番ネタの「ファイルを読んで、そのままコピーする」のはこんな感じ?ちょっと冗長な気がするなぁ...
#!/usr/local/bin/ruby File.open("a.rb") { |infile| File.open("a.rb.copied", "w") { |outfile| infile.each_line do |line| outfile.puts line end } }
5章は短かったので、何とか一日で終りました。ちょっと理解が浅い気がするので、後日復習しないとなぁ...
6章に続く(多分)