ビルダ的なモノを作ってみる

class Hoge(paramA: Int, paramB: Int, paramC: Int) {
    override def toString = 
        "paramA=" + paramA.toString + 
       ",paramB=" + paramB.toString + 
       ",paramC=" + paramC.toString
}

class Builder {
    private var _paramA = 0
    private var _paramB = 0
    private var _paramC = 0
    def paramA(paramA:Int) = {
        _paramA = paramA
        this
    }
    def paramB(paramB:Int) = {
        _paramB = paramB
        this
    }
    def paramC(paramC:Int) = {
        _paramC = paramC
        this
    }
    def build = new Hoge(_paramA, _paramB, _paramC)
}

ビルダの使用

println(new Builder paramA 1 paramB 2 paramC 3 build)

何とも言えぬ気持ち悪さ。
で、書いた後で2.8系から名前付き引数とデフォルト引数が使えることに気づいた。