関数オブジェクトを作るときに暗黙のパラメータをどう渡すか
関数オブジェクトを作るときに暗黙のパラメータをどう渡すべきなのでしょうか。
次のように、何も指定しないとエラーになります(val process = の部分)。
case class Cache(key: Int, value: String)
class Processor {
val process = processF _ // could not find implicit value for parameter cache: this.Cache
private def processF()(implicit cache: Cache): String = cache.value
}
object Main {
def run() {
implicit val cache = Cache(10, "hello")
val processor = new Processor
processor.process()
}
}
Main.run
こんなかんじで書ければいいのですが、うまくいきません。
val process: ()(implicit cache: Cache) => String = processF _ // シンタックスエラー
そもそも可能かどうかもわかりませんが、どういったアプローチが有効かお教え願えますでしょうか。よろしくお願いいたします。