gpt4 book ai didi

scala - 关键字 'implicit' 放在 lambda 表达式参数前面是什么意思?

转载 作者:行者123 更新时间:2023-12-03 14:51:33 25 4
gpt4 key购买 nike

我以前多次看到这种代码,最近一次是在 scala-user 邮件列表中:

context(GUI) { implicit ec =>
// some code
}
context定义为:
def context[T](ec: ExecutionContext)(block: ExecutionContext => T): Unit = { 
ec execute {
block(ec)
}
}

关键字有什么作用 implicit放在 lambda 表达式参数前面时实现?

最佳答案

scala> trait Conn
defined trait Conn

scala> def ping(implicit c: Conn) = true
ping: (implicit c: Conn)Boolean

scala> def withConn[A](f: Conn => A): A = { val c = new Conn{}; f(c); /*cleanup*/ }
withConn: [A](f: Conn => A)A

scala> withConn[Boolean]( c => ping(c) )
res0: Boolean = true

scala> withConn[Boolean]{ c => implicit val c1 = c; ping }
res1: Boolean = true

scala> withConn[Boolean]( implicit c => ping )
res2: Boolean = true

最后一行本质上是倒数第二行的简写。

关于scala - 关键字 'implicit' 放在 lambda 表达式参数前面是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9339962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com