minimize

事業拡大のため、新しい仲間を募集しています。
→詳しくはこちら

色々、気付いたことを載せて行きます。新しいものが上。
まとまったら別のページに移動させることもあるかもしれません。

switch

Groovy の switch は、スゲー便利。

switch (x) {

    case 0:
        println "x = 0"
        break
        
    case "abc":
        println "x = 'abc'"
        break
        
    case [7, 'Z']:
        println "x is 7 or 'Z'"
        break
        
    case ~/\d+/:
        println "x is Digit String"
        break
    
    case String:
        println "x is String"
        break
    
    case 10..20:
        println "x is 10 between 20"
        break
    
}

やるな。

use

これを使うと、既存のインスタンスに機能を拡張できる。
いわゆる Mix-in というやつか。

class NumberCategory {
    static Distance getMeters(Number self) {
        new Distance(number: self)
    }
}

use(NumberCategory) {
    println 300.meters
}

おぉ、なんかすげぇ。

Delegate

Groovy では、Annotation 一つで簡単に Delegate を定義できる。

def jsonUser
String getScreenName() {
    jsonUser.getScreenName()
}
String getName() {
    jsonUser.getName()
}
...

今までこう書いていたのを、Groovy では以下で良い。

@Delegate User jsonUser

うーん、素晴らしい。

配列とList

以下のように記述すると、それはListクラスのインスタンスになる。

columnNames = [ "COUNTRY", "WIN", "LOST", "EVEN" ]

配列にしたかったら、以下のようにする。

String[] columnNames = [ "COUNTRY", "WIN", "LOST", "EVEN" ]

引数にListを持つメソッドの呼び出し方

tableModel.addRow("a", "b")

これで良い。

Swing

Swing の中で使える Widget 一覧 http://groovy.codehaus.org/Categorical+Widget+List