JRubyやり直し

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でプログラムを作りたい。

同じタグの記事
同じカテゴリの記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA