JRubyを使わなくなっていた。理由はjarファイルの指定をアスタリスクで複数指定できなかったから(Windowsの時)。ちょっとAPI呼びたい時に面倒だったから。
しかし、Jythonではどうしても文字列の対応が難しい部分があり、JRubyを使おうと思った。
JRubyの構文が全く思いだせない。
ディレクトリ内のファイル(ディレクトリ)を表示する
Dir.open(".").each do |f| puts f end
完結だ。覚えればPython並みに便利なツールになるんだろう。
ファイルかどうかを判断する
dir = "." Dir.open(dir).each do |f| path = File.join(dir, f) puts path puts File.file?(path) end
パスの結合にはFile.join()を使う。
リストの定義、追加、ソート、イテレート
よく使う方法を考えて、リストの中には敢えてHashを入れる
my_list = [] my_list << {:id => "1", :name => "John"} my_list << {:id => "2", :name => "Bob"} my_list << {:id => "3", :name => "Ken"} my_list.sort! do |a,b| a[:name] <=> b[:name] end my_list.each do |i| puts i[:name] puts i[:id] end
Hashの任意の項目でソートできる。
ソーターの指定が簡単にブロックを指定できるところが嬉しい。
文字列の便利な用法
name = "Ruby" puts "Hello, #{name}!" puts name.downcase puts name.upcase
この辺りも簡単。最初はすっかり忘れていてsprintf使っていたけど、分が短い時は#{xxx}の方がずっと完結。
ifブロック
a = 10 if a == 3 then # elsif a == 5 then # else # end
endをついつい忘れてしまう。Pythonの癖だ。
関数の作成
def my_func(x, y=",") puts x + y + x + y + x end my_func "aaa" my_func "bbb", "" my_func("ccc", "-")
デフォルト引数が使える。ほとんどの言語で使えるけどJavaでは使えない。なぜJavaはデフォルト引数を使わせてくれないのだろう。引数違いのメソッドをたくさん作るの面倒なのだが。
まとめ
Rubyなかなか面白い。
タブのスペースの数が2つなので、ifをいっぱい入れ子にするとend end endが沢山ならんで面白い(極端な入れ子の実装の話は置いておいて)。
忘れないうちに、もう一つJRubyでプログラムを作りたい。
同じタグの記事
同じカテゴリの記事