Scala 使用隐式参数创建功能对象
Scala creating functional objects using implicit parameters
在 trait 中创建功能对象时如何传递隐式参数?
无法编译此代码。
case class Cache(key: Int, value: String)
trait Processor {
val process = processF _ // error: could not find implicit value for parameter cache: Cache
private def processF()(implicit cache: Cache): String = cache.value
}
object Main extends App with Processor {
implicit val cache = Cache(10, "hello")
process()
}
我希望做这样的事情:
val process: ()(implicit cache: Cache) => String = processF _ // syntax error
或者有什么可行的方法吗?
与方法不同,函数对象不能有隐式参数。
我觉得
// in Processor
def process(implicit cache: Cache) = () => processF()
// in Main
process.apply()
// or
val process1 = process
process1()
最接近你想要的。或者,
trait Processor {
implicit val cache: Cache
val process = processF _ // error: could not find implicit value for parameter cache: Cache
private def processF(): String = cache.value
}
在 trait 中创建功能对象时如何传递隐式参数?
无法编译此代码。
case class Cache(key: Int, value: String)
trait Processor {
val process = processF _ // error: could not find implicit value for parameter cache: Cache
private def processF()(implicit cache: Cache): String = cache.value
}
object Main extends App with Processor {
implicit val cache = Cache(10, "hello")
process()
}
我希望做这样的事情:
val process: ()(implicit cache: Cache) => String = processF _ // syntax error
或者有什么可行的方法吗?
与方法不同,函数对象不能有隐式参数。
我觉得
// in Processor
def process(implicit cache: Cache) = () => processF()
// in Main
process.apply()
// or
val process1 = process
process1()
最接近你想要的。或者,
trait Processor {
implicit val cache: Cache
val process = processF _ // error: could not find implicit value for parameter cache: Cache
private def processF(): String = cache.value
}