やっとRuby の素晴らしさを実感
やっぱりPGは楽しいですね。
なかなか、PGの矛先がなかったのですが、意味論を学び、XMLをXSLTで変換をしたりして、意味を切り出すということを今までも行ってきたのですが。
CADの要素をリスト表現していたりしたので、XMLで意味づけされたモノをパースするのは、私のやりたいことでした。
そんな時、去年の Ruby world で、Ruby と XML の相性の良さを知らされ、やっと今年取り組んだのですが、まことに強力ですね。
ただ、これまでは、 Ruby というよりは、そのライブラリ(他の言語にも対応している)の力をお借りしていたわけですが、ここにきて Ruby の威力の恩恵を感じるようになってきました。
その第一は、Object 間の型変換です。
いちばん最初に恩恵を受けるのは、出力(Print等)ですね。 Object をそのまま出力指定すれば、かってに文字列(String)にしてくれます。
そして、実感するのは配列(Array)ではないでしょうか?追加、削除も簡単で、有効要素を一つずつ取り出してくれます。複数引数も戻り値も配列になっちぁいます。
そしてソートが簡単。こんな感じ。
# 日付でソート
list.sort! {|n, m|
n.date <=> m.date # <---- 昇順
m.date <=> n.date # <---- 降順
}
それから、Ruby には型指定がないので、呼びだされた メソッド でクラスの名前を“class.name”で取り出し、処理を分岐できるし、アドレスポインタがないので、“__id__”でObject を識別できるようです。
あとは、メソッドのエリアス(Alias)が多いので、同じことをいろんな記述が可能で、非常に簡略にすることが可能であるとか、メソッドの呼び出しで引数は、カンマ(“,”)区切りでられつだけで良いとか、あまり括弧区切りを使わなくてよい記述が可能になっています。
ただ、ここのところは、C,C++ 使いだった吾輩には、ちょっぴり苦しいですね。
まぁ、C,C++ だったら、自分で作る必要のある機能が、標準ライブラリやOSS提供であるというのが素晴らしい。ほんとうに役立ちます。
ところで、現在は、RSS のパースを行っているのですが、Web browser で正常に表示できるものが、うまく要素に変換できません。ライブラリの中でエラーが発生しています。これから、ソースを追ってみようかな?
| 固定リンク


コメント