首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Scala中"T =:= Int = null“是什么意思?

问在Scala中"T =:= Int = null“是什么意思?
EN

Stack Overflow用户
提问于 2017-10-08 01:22:41
回答 1查看 77关注 0票数 3

如下代码所示。

代码语言:javascript
复制
class A[T] {
  def add(n: Int)(implicit env: T =:= Int = null): Int = n + 1
}

object A extends App {
  val a = new A[Int]
  a.add(1) // 2
}

我知道T =:= Int的意思是T应该是Int类型,但是= null部件是什么意思呢?

Note:这个例子是我编的。如果= null不合适,最好能向我展示它的正确用法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-08 01:30:46

null只是将一个默认值分配给ev,就像对任何其他参数一样。这是一种聪明的方法来确定类型是否实际上是一个Int。

代码语言:javascript
复制
 def isInt[T](implicit ev: T =:= Int = null): Boolean = env != null

 isInt[Int] // true
 isInt[String] // false

诀窍是,当编译器看到Int时,它将传递实际的隐式值,而当它找不到它时,它只会将其保留为默认值。因此,通过检查ev是否为null,您可以判断调用站点上是否存在隐式。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46626679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档