テキスト差分のJavaScriptプログラム Rubyへの移植状況
前に書きましたテキスト差分をとるJavaScriptプログラムですが、Rubyへの移植がすこしずつ進んでいます。
案の定、JavaScritpとRubyの似て非なる文法にかなり悩まされましたので、そのポイントなど。
- 配列の負のインデックス
- JavaScritpでは配列に負のインデックスが許されるようで、もとのプログラムでもこれが使われています。一方Rubyの配列では負のインデックスは
許されませんので、動作が異常になります。しかも負のインデックスでアクセスしてもエラーにはなりません。許されますが、動作が異なります(詳細はコメント参照)。
- JavaScritpでは配列に負のインデックスが許されるようで、もとのプログラムでもこれが使われています。一方Rubyの配列では負のインデックスは
- 配列のsliceメソッド
- 元のプログラムではslice(0)で配列をコピーしている箇所がありますが、Rubyでは意図とおりに動きません。
- 配列のmapメソッド
- 配列をまとめて別の配列に変換するmapメソッドですが、Rubyでは元プログラムのようにブロック内にreturnを書いてしまうと、mapメソッドを含む関数から抜けてしまいます。
以上、まだあるかもしれませんが、もうすこしでRuby版テキスト差分プログラムが動きそうです。
しかし、正しくない文法を書いてもエラーにならない場合があるというのが、Rubyのいやらしいところですね。