以下のコードは、単純に「ケース クラス」にすれば問題なく動作します。ただし、変更可能なオブジェクトに対しては確かにそれは望ましくありませんが、通常のクラスに変更することで、最後に無名関数パラメーターを理解できなくなったようです。なぜこれを乗り越えられないのかわからないので、いくつかのバリエーションを試してみましたが、ケースクラスにする理由がわかりません。(scala 2.10.2) - ありがとう
/**
*
* @param target - can be any large target number
* @param perPiece - at what percentage interval is todo called
* @param todo - passed current percentage complete
*/
class ProgressTool(target:Double, perPiece:Double) (todo: (Double)=>Unit) extends Mutable {
private[this] var lastUpdate:Double =0.0
def update(atPos:Double) = {
val step = atPos - lastUpdate
if (step/target >=perPiece) {
lastUpdate += step
todo(lastUpdate)
}
}
}
object TestProgressTool extends App {
val x = new ProgressTool(1000,.01) { x:Double =>
println("Hello "+ x)
}
}
クラス ProgressTool のコンストラクタ ProgressTool の引数がありません val x = new ProgressTool(1000,.01) { x:Double => ^