Groovyこのシリーズの一覧はこちらはじめに昨日(2011-02-19)に第2回Scala道場に参加してきたわけですが、コーディング最中に一点はまったことがあったのでメモしておく。はまった点まずは、ソースコード*1をご覧下さい。}}上記でココ注目!とした部分をはじめ、以下のように書いてしまっていました。DishOrderSheet(800)そうです、defです。Groovyでは変数だろうとメソッドだろうと宣言時はいつでもdef♪ですよね。ところがScalaだとdef関数宣言の時で、変数はvarやvalを使ってね、となっている。いうことで、上記例のようにdefで右辺をクラスをnewするように書いてしまうと、毎回新しいクラスがnewされて返ってきちゃう、言うなれば簡易ファクトリメソッドだ!となってしまうわけですね。よって、osにアクセスするたびにnewされてしまって、その後の以下の部分でosで保持してたインスタンスに対してsetOrderIdしたかったんですが、期待した動作にならなかったわけです。os.setOrderId("k.kano_vip")osにアクセスするとnewされたインスタンスが返ってくるそのインスタンスにsetOrderIdするみたいな感じになってしまってたわけですね。まとめGroovy使いはScalaを書くときはdefの使いどころを見極めるべし。糸電話式のアレ*1:ソースコードは抜粋ですので、完全版は[http://d.hatena.ne.jp/aya_eiya/20110219/1298121073:title=リンク元の方]で先に確認しておくことをお勧めします。クロージャって便利ですよね。前回は自分でクラスを書...2011-02-11Scalaのfor式がうまく動かない件についてScalaの練習がてら、引数で受け取ったパスのファイルを読み込ん...2009-03-29Groovyでスクレイピングしてみるウェブサイトのデータを必要な部分だけ抽出して利用すること。...2009-02-04テキストを行番号付きに加工して出力するスクリプトいや、ほんの小物です。»プロフィールid:fumokmm新しいNPNLです。(2)はてなブログをはじめよう!fumokmmさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。