2008-10-01から1ヶ月間の記事一覧

オレオレURLプロトコル

任意の情報を独自プロトコルの URL で指定したいなぁと思い立った今日この頃。たとえば、hogeプロトコル。 hoge://example.com/foo/barとか。 でも、URL って基本的に http プロトコルくらいしか使わんですよねー (´・ω・`)たとえば http://www.yahoo.co.jp …

コンストラクタのパラメータの組み合わせ爆発に対応する

java だと、きちんとクラスを作りこもうとすればするほど、コンストラクタ引数の組み合わせが爆発しそうになることってありますよね。*1そういうときに、groovy の名前つきパラメータって便利かも。 class Person { def name, age } // 名前つきパラメータ p…

リストから任意のクラスのインスタンスを作成する

プログラム中で得た値を元にインスタンスを生成する場合とか、結構便利かも。 class Person { def name, age Person (name, age) { this.name = name this.age = age } } p = ['foo', 20] as Person // ===> Person@199939 p.name // ===> foo p.age // ===>…

spread operator

配列やマップを展開してくれるオペレータ "*" です。 配列やマップを引数として受け取り、それを他のメソッドのパラメータにするときなど便利そうです。 list.addAll( )とかしなくて済むのも楽でいいですね〜。 配列の場合の例 range = (1..3) assert [0,1,2…

GPathって便利かも

今日は GPath ネタ。たとえば、java.lang.String クラスのメソッド名のリストを取得する場合、java だと以下のようになります。 List<String> methodNames = new ArrayList<String>(); for (Method m : String.class.getMethods()) { methodNames.add(m.getName()); } でも、</string></string>…

Groovy って private が使えないの?

private final なのに書き込めてしまいました o...rz class Person { private final name = 'foo', age = 30 } p = new Person() p.name = 'hoge' // private final なのに書き込める。 assert p.name == 'hoge' p.age = 20 assert p.age == 20 // private f…