No Programming, No Life

プログラミング関連の話題や雑記

groovyshではdefは使わないほうがいい、たぶん

これは…

id:orangecloverさんが
Groovyでdef関数からdef関数が呼び出せないのか? - みちしるべ
でいろいろと困っているようだったんですが、この症状は私もなったことがある。

groovyshでdefを使うとスコープが(たぶん)その行だけになる


$ groovysh
Groovy Shell (1.7.5, JVM: 1.6.0_20)
Type 'help' or '\h' for help.

                                                                                                                                                                                                                                            • -

groovy:000> def a = 10
===> 10
groovy:000> a
ERROR groovy.lang.MissingPropertyException:
No such property: a for class: groovysh_evaluate
at groovysh_evaluate.run (groovysh_evaluate:2)
...

みたいな単純な例でも発生するので。*1

まとめ

groovyshではdefは使わない!に限る。


$ groovysh
Groovy Shell (1.7.5, JVM: 1.6.0_20)
Type 'help' or '\h' for help.

                                                                                                                                                                                                                                            • -

groovy:000> a = 10
===> 10
groovy:000> a
===> 10
groovy:000>

*1:タイトルに"たぶん"がついてるのは詳しく原因を調べてないからです。推測です