Groovy

型に対するメタクラスとインスタンスに対するメタクラスで遊んでたら例外がでた

環境は、Groovy 1.6.3 で、GroovyConsole で遊んでました。何なんだろ。 Groovy でクラスを宣言しそのインスタンスを生成した後に、クラスのメタクラスからメソッドを変更します。その後に、インスタンスのメタクラスを呼び出したら怒られた。 class Test { …

インスタンス生成後に、型に対するメタクラスで拡張しても生成してあったインスタンスには影響しない

環境は、Groovy 1.6.3 です。 class Test { void print() { println 'Print' } } def t = new Test() t.print() // print Test.metaClass.print = { println 'Class Custom Print' } t.print() // Print new Test().print() // Class Custom Print

第3回 「Groovyイン・アクション」読書会 IN 関西 で ショートセッションをやりました

第3回 「Groovyイン・アクション」読書会 IN 関西 で ショートセッションをやります - お だ のスペース でも書きましたが、「仕事でもGroovyを使おう」というタイトルでショートセッションをやらせてもらいました。 内容を簡潔に書くと、「便利さを見せつけ…

第3回 「Groovyイン・アクション」読書会 IN 関西 で ショートセッションをやります

JGGUG 第3回 「Groovyイン・アクション」読書会 IN 関西 にて ショートセッションをやらせていただく事になりました。 セッションをやるのは初めてなので、かなり楽しみにしています。 内容は濃い技術的な話しではなく*1、職場でも Groovy を使う/認めてもら…

Azure で Groovy って動くのかな?(挫折)

タイトルの通り Windows Azure で Groovy が動くのか試そうとしました。Azure では、Java が動くらしいのでなら Groovy も動くんじゃね?みたいな軽いノリで。 まず、SDK を入手します。現在の所、.NET Services 用の SDK しか無いようです。(ちなみに、Rub…

Range で作った 文字列の範囲はインターンにいない

println "0..9" def internDigit = [ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' ] ('0'..'9').eachWithIndex { it, index -> println it.is(internDigit[index]) } println "1..9" internDigit = [ '1', '2', '3', '4', '5', '6', '7', '8', '9' ] …

インスタンス毎のメタクラス って強力過ぎ!

コメントにて紹介して頂いた、次の記事を読んで衝撃を受けました。 インスタンスごとのメタクラスを使っての「電卓を作ろう」2番煎じバージョン - uehaj's blog 「インスタンスごとのメタクラス」の活用法 - uehaj's blog どうも、型だけではなくインスタン…

Java で "1" == "1" が true になる理由

Java で String(文字列)の比較をする場合、「==」じゃなくて、equals メソッドを使えと言われます。それは、「==」が同一性の比較であって同値性の比較では無いからなんですが、 ここで、下のコードの実行結果ってどうなると思います? System.out.println…

Object の同一性を確かめる

Groovy の場合 equals メソッドを実装していると、「==」演算子は、equals メソッドと同じ動きをする。 equals メソッドを実装している Object で 同一性 を確かめる方法ってないんだろうか?と調べていると、見つかりました。 Object.is メソッドがそうみた…

Groovy で XML ファイルを書き替えてみる

XML ファイルを書きかえるのに、PowerShell が便利! - お だ のスペース の続き。 コメントにて、Groovy (XmlParser) で XML ファイルを変更する方法を教えて頂いたので調べてみました。 Groovy - Updating XML with XmlParser を見ていると理解出来ないこ…

XML ファイルを書きかえるのに、PowerShell が便利!

Groovy (Java)を分かってないだけかもしれませんが、PowerShell の方が便利でした。 こんな データベースの定義を表す xml があった時に、 <Database> <Table name="M001_User" > <Column name="Id" Type="int" Length="0"/> <Column name="Name" Type="nvarchar" Length="50"/> <Column name="Age" Type="int" Length="0"/> </Table> <Table name="M002_Org" > </table></database>

Grails WebTest がカッコイイ

今、「Groovy イン・アクション」の CHAPTER 16 で Grails を紹介しているので、読みながら試しています。 そのなかで webtest プラグインってのが紹介されていたので、試してみました。 どんなテストを行っているのかとかは未だ理解してないんだけど、結果…

Groovy で Excel ファイルを読み込んで .properties ファイルを作成してみる

Java の .properties ファイルってのを作成するための元データを Excel で管理していて、今までは Excel マクロ を使って .properties ファイルを作成していたんだけど、 ビルドプロセスの一環に組み込む事にしようってことで、Excel マクロだと権限の問題等…

GString の評価について誤解してた…

ゲンゾウ用ポストイット: GStringは場合により遅延評価される でも書いてある通りなんですが、こんなコードを書いて大いに誤解してました。 def str = 'test' def gstr = "GString : $str" println gstr // GString : test str = 'test-2' println gstr // G…

Grails と GAE を試してみた

読書会の LT の資料と ゲンゾウ用ポストイット: ついにgoogle app engineでGrails動いた!! を参考にしながら、何とか Google App Engine に空の Grails アプリを載せる事が出来ました! が、Grails ってどうやってアプリを作るのかわからね〜。。。Grails …

カリー化って…

読書会で、「Groovy イン・アクション」 128 ページ 迄進んだ。 その中でカリー化ってのが出てきたんだけど、いまいち良く分からなかった。 関数の引数を固定して、何回も呼び出すのを楽にするって事?でもそれなら、オーバーロードでいいよね? public void…

第2回 「Groovyイン・アクション」読書会IN関西 参加しました

第2回 「Groovyイン・アクション」読書会IN関西 開催 参加してきました。 なんやかんやで、Google App Engine に Grails のアプリを載せる事になった。 最近、Groovy すらサボってる(Silverlight ばっかり)し、Grails も GAE も触った事ないや。 とりあえ…

ダックタイピングの恩恵

「Groovy イン・アクション」を読んでる。今 93 ページ だ。 リストを使ったクイックソートのサンプルが載ってたので試してみた。(一部改変) P.93 4.10 リストを使ったクイックソート def quickSort(list) { if (list.size() < 2) return list def pivot =…

リストの添え字に負の値が使える

「Groovy イン・アクション」を読んでる。今 87 ページ だ。 Groovy では、添え字に負の値が使えるんだって。なのでちょっと試してみた。 myList = ['a', 'b', 'c', 'd', 'e'](0..4).each({println ("$it:" + myList[it])}) (-1..-5).each({println ("$it:" …

文字列リテラル について

読書会で一気に進んだので、復習。 ※読書会の内容は、JGGUG 関西支部長の id:kiy0taka:20090426:1240757105 さんがまとめてくれています。 ダブルクォート(")で囲った場合、GString になるらしい。 GString は、変数の値を文字列に埋め込めるので便利そう。 …

「Groovy イン・アクション」読書会IN関西 参加しました。

「Groovy イン・アクション」読書会IN関西 から今帰ってきました。 何かすげ〜楽しかった、読書会も懇親会も。 モチベーション上がってきた〜。 自分が読んでたとこよりも先に進んでしまったんで、もっと読み進めなきゃ!

演算子のオーバーライドって ダックタイピング?

「Groovy イン・アクション」を読んでる。今 56 ページ だ。 ここで、演算子のオーバーライドの例が載っている。でダックタイピングって思ったのは、加算演算子がそうなのかなと。 本に載ってたコードの一部抜粋。 class Money { private int amount private…

GMaven を使ってみる。(挫折)

Groovy で書いたコードをビルドするのに、いつまでも groovyc は面倒だなと思ってビルドツールを使おうと思った。 Ant って何でか使ったことなくて(.NETでは、msbuild を使ってる)また Maven が良いみたいな事を聞いた事があるので、 Maven を使ってみよう…

.NET 使える人は Groovy も触ってみようよ!

Groovyイン・アクション まだまだ最初の方だけど、今のところ違和感無く読めてる。しかも結構面白い! 未だ触ったこと無い人は是非触ってみてください。 このページでも少しずつではあるけど、 Groovy にある機能で .NET にも似た様なのがあれば紹介していく…

Groovy クロージャが使える

「Groovy イン・アクション」を読んでる。今 38ページ だ。 ここで、クロージャ というものが紹介されていた。 クロージャって聞いた事あったんだけど、実際どんなんか知らなくて興味津々。 シンプルな例が載ってたんだけど、 [1, 2, 3].each { entry -> pri…

Groovy プロパティのアクセサメソッド は省略可能

「Groovy イン・アクション」を読んでる。今 33ページ だ。(全然進んでないな…) class Book { private String title public void setTitle(String val) { this.title = val } public String getTitle() { return this.title } } def a = new Book() a.setT…

Groovy の演算子って

「Groovy イン・アクション」を読んでる。今 30ページ だ。 ここで、よくわからないコードが載ってた。 assert ('test' * 3 結果は正常に終わる。なんでかわからないので、 println 'test' * 3 を実行した。結果は、 testtesttesthello だった。 'test' * 3 …