加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala – 关键字“implicit”在放在lambda表达式参数前是什么意

发布时间:2020-12-16 09:32:32 所属栏目:安全 来源:网络整理
导读:以前我已经看过这样的代码,最近在scala-user邮件列表中: context(GUI) { implicit ec = // some code} 上下文定义为: def context[T](ec: ExecutionContext)(block: ExecutionContext = T): Unit = { ec execute { block(ec) } } 放置在lambda表达式参数
以前我已经看过这样的代码,最近在scala-user邮件列表中:

context(GUI) { implicit ec =>
  // some code
}

上下文定义为:

def context[T](ec: ExecutionContext)(block: ExecutionContext => T): Unit = { 
  ec execute { 
    block(ec) 
  } 
}

放置在lambda表达式参数前面的keeyword隐含实现的目的是什么?

解决方法

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

最后一行本质上是第二次的速记。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读