如何将匿名n-ary函数的参数标记为隐式?例如,请考虑以下事项:
def foo(f: (String, Int) => String): String = f("cat", 2)
def bar(s: String)(implicit i: Int): String = s * i
foo { implicit (s, i) =>
bar(s)
}
最后一行无法编译,报告以下错误:
test_tuple_implicits.scala:7: error: expected start of definition
foo { implicit (s, i) =>
^
one error found
这对我来说很奇怪,因为我知道可以将参数标记为一元函数的隐含,例如使用Play web framework时:
Action { implicit request =>
Ok("Got request [" + request + "]")
}
我也尝试过标记隐含foo { (implicit i, implicit s) =>
的每个值而没有运气。搜索引擎也不是很有帮助,但我不确定我是否有合适的关键字。
def foo(f: String => Int => String): String = f("cat")(1)
def bar(s: String)(implicit i: Int) = s * i
foo { s => implicit i =>
bar(s)
}
我想知道是否有一个更清晰的解决方案,特别是一种标记两个值的方法(如implicit a, b
)。