【发布时间】:2014-01-10 08:49:01
【问题描述】:
给定以下函数:
def foo()(implicit count: Int): (String => Seq[String]) = {
s => for (i <- 1 until count) yield s
}
在结果上调用apply() 明确有效:
implicit val count = 5
val x = foo().apply("x") // <- works fine
并将结果设置为val,然后您将其作为函数调用,这样可以:
val f: String => Seq[String] = foo()
f("y") // <- works fine
但如果没有apply,试图在一行中完成所有操作,编译器会误以为您正在显式传递隐式:
val z = foo()("z") // type mismatch; found: String("z"), required: Int
有没有办法在没有显式apply 或中间val 的情况下做到这一点?例如,是否有可能以某种方式将implicit 声明移动到返回的匿名函数中?
【问题讨论】:
标签: scala anonymous-function implicit