rubyは読めた方が良いなぁと思っていたのですが、タイミングが無くてほったらかしでした。で、「1時間で覚えるRuby」という面白そうな記事を見つけたので内容を写経して見ました。結果は45分でこなせて効果もあったのでオススメです。
気付いた事を箇条書きにしておきます。
- Integer型の0はTrue扱い
- irbがpythonで言うところのipython
- pythonで言うところの辞書は、perl同様ハッシュと呼ぶ
- メンバ変数には@を付ける
- クラス変数には@@を付ける
- to_sでtostring
- インクリメント演算子はない
- 正規表現はperlに似てる。置換はsub, gsubを使う
- ARGFにファイルハンドルが入ってる
- 知らないオブジェクトはirbのタブ補完機能で補完リストを眺めたらなんとかなる
- ipythonで言うところの?とか??の機能がirbで見つからない
上記エントリには記述がなかったですが、写経しながら調べた事は以下。
- gemがperlで言うところのcpanコマンド。gem helpでコマンド一覧
- rubyforgeがperlで言うところのcpan。でも廃止されるらしい。
- 組み込み型のStringとかIntegerとかでもメソッドを追加(変更?)できる
もう少し慣れたら後はリファレンスでなんとかなりそうな雰囲気ではあります。とりあえず最後のワードカウントを自力で書いたら以下のようになりました。
#!/usr/bin/ruby # usage: wc_test.rb file line_num = 0 dic = {} for line in ARGF line_num += 1 for word in line.split(/\s/) if dic[word] dic[word] += 1 else dic[word]= 1 end end end total = 0 for k, v in dic.sort{|a,b| a[1] < => b[1]} total += v printf("%s : %d\n", k, v) end printf("%d lines, %d kinds, %d words", line_num, dic.size, total)
今のところrubyで何か書きたい訳ではなくて、幾つか読みたいソースがあるだけなので、ぼちぼち覚えて行こうと思います。
追記
ついでにirbを少しだけカスタマイズしました。
$ gem install what_methods $ gem install wirble
上記モジュールをインストールした後に~/.irbrcを編集します。これでirbのヒストリが使えたり色がでたりと便利になりました。
require 'rubygems' require 'activesupport' require 'pp' require 'irb/completion' require 'what_methods' require 'wirble' IRB.conf[:SAVE_HISTORY]=1000 Wirble.init Wirble.colorize
関連する記事
タグ: ruby

