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でプログラムを作りたい。
同じタグの記事
同じカテゴリの記事
コメントを残す