作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想以这样的方式定义一个带有隐式参数的函数:
// imports to add scope of A
{
implicit a: A => {
// some action
}
}.apply()
// somewhere in the code
class A
val a: A = new A
Scala
编译器不编译它。它说:
Cannot resolve reference apply with such signature
.但是,参数是隐式的,所以我猜编译器应该在范围内查找并找到合适的对象。
最佳答案
你不能。只有方法可以有隐式参数。
当你这样做时:
// val f: A => Unit =
{
implicit a: A => {
// some action
}
}
A => Unit
类型的匿名函数并且您正在声明参数
a
隐含在函数体中
class A
case class Magnet()
object Magnet {
implicit def fromUnit(arg1: Unit)(implicit a: A) = Magnet()
}
object Test extends App {
implicit val a = new A
{
args: Magnet => {
//...
}
}.apply()
}
Unit
,你应该这样称呼它
.apply(())
避免它
关于Scala:如何使用隐式参数定义匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36809817/
我是一名优秀的程序员,十分优秀!