returnを省略できる言語 2008/07/19

Javaではreturnを省略して書くことができません。
どいうことかといいますと
ある処理が、何らかの値を返すとして、

return 何らかの値;

とは書けても
何らかの値;

という記述はしません。

perl,ruby,groovyとかそういう記述の仕方ができます。

普段とくにそういうことは、そういうもんだと理解して、気にもとめないのですが、
BSFを使ってJavaからスクリプトを実行する場合のそのスクリプトの記述で悩みました。

JRubyを使ったのですが、何気に
new BSFManager().eval("ruby", "(java)", 1, 1, "return 'OK'");

とついついしたわけです。
素直に文字列OKを返してくれるだろうと....
例外がでます。

evalは式を評価してその結果を返すわけです。
returnを書く必要などないわけですが、何故かreturnを書きたくて仕方がない自分(笑)

上記のコードは、
new BSFManager().eval("ruby", "(java)", 1, 1, "'OK'");

でevalがOKを返してくれます。
returnが使えるのは、
new BSFManager().eval("ruby", "(java)", 1, 1, "def a¥n 'OK' ¥n end ¥na()");

メソッド定義した場合のようです。

ちなみに
new BSFManager().eval("ruby", "(java)", 1, 1, "a='OK'");

としてもOKが返されます。

参考

: