are you enjoy ruby 1 day
DESCRIPTION
ruby社内講習会資料TRANSCRIPT
Rubyの魅力と使えるテクニック Part1
Written by Keisuke Hata
Rubyの魅力:IO編
• Rubyは、IO処理が非常に得意。テレーターという概念で、あっという間にIO処理ができちゃいます。
readlines()の後に”.”をつけて,テレーターで回しているのがポント。
readlines()で配列を受け取ってから、回さなくてもいいのです。
配列が入っているのだから、そのままテレーターで要素分処理してしまえ
ばいいんです。仮にテキストが空でも[]のように空の配列が返ってくるので
エラーになることはないです。
IO処理で、簡単にテキスト処理
• こんなに簡単にIO処理ができるなら、ちょっとしたテキスト処理は、ワンラナーで書いちゃいましょう!!これがRubyの魅力。
数値が記入された、改行区切りのテキストを読み込んで、同じ値は、カット
し、さらにソートした状態の配列を返す処理です。受け取った配列を出力すると
これをC言語で1分で書けますか?
Rubyならかけてしまいます。
ワンライナー:1行だけのプログラム
IO処理:glob(“*.*”)で幸せに
• IO処理でよく使う操作。それは、デゖレクトリ内のフゔルをマスクして処理すること。
• C言語などは、FindFirstFile()等で再帰処理を書いて、ごにょごにょ・・・さすがにこれは面倒ですよね・・・
そこで Dir.glob()の登場!!
Dir.glob()って何?
• Dir.glob()とは、デゖレクトリ内のゕテムをワルドカードに従って展開し、配列化してくれます。
使い方もすごく簡単。
みての通り、すごく直感的に
書けちゃいますね。
さらにこのfileという要素をopen()に
渡して、さっきの例と組み合わせて、
テキスト処理を楽しく、簡単に!!
あなたは、フゔルですか?デゖレクトリですか?
• フゔルやデゖレクトリを処理する時に、それがフゔルかデゖレクトリか知りたい時があります
あんたは、file? , directory?それが知りたい時です。
ならそのまま書いて下さい。
Rubyなら思ったことが
そのままコードにおこせます。
書けちゃいます!!
もっと素直に聞きたい。あなたは、何ですか?
• さっきのコードでも、C言語になれてきた方は、衝撃的だと思いますが、もっと衝撃を。。。Rubyでは組み込みクラスをユーザーが改良できちゃいます。
Stringクラスに
file?とdirectory?
を追加しました。
これで “文字列”.file?って感じで
あなたは誰ですか?をそのまま
書くことができちゃうわけです。
IOは、深い。。。
• IOは、今日紹介しただけでなく、調べていくと、もっと深い仕組みになっています。そんな時は、リフゔレンスが役に立つでしょう。
参考)Rubyリフゔレンスのページhttp://elbereth-hp.hp.infoseek.co.jp/ruby.html http://elbereth-hp.hp.infoseek.co.jp/files/ruby/ruby-man-1.4.6-en-htmlhelp.lzh
• Vimなんかは、Refe入れると、vim上でリフゔレンス引けたりしてかなり幸せですが、Emacsとかも似たようなものがあるのかもしれませんね。
• KeyHHなんかも入れておくと、調べたい単語の上でキーを押せばリフゔレンスが立ち上がったりして、スーパー便利です。
参考)id:secondlifeさんのページhttp://subtech.g.hatena.ne.jp/secondlife/20061225/1167024736