如以下代码所示。
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
部分是什么意思?
注意:这个例子由我组成。如果你不恰当的话可以告诉我= null
的正确使用情况会更好。
答案 0 :(得分:6)
Set mypic = my_word.Selection.InlineShapes.AddPicture(Photo_Browser.Photo_Location & "\" & Photo_Browser.Photo_List.List(i), False, True)
my_word.activedocument.InlineShapes(my_word.activedocument.InlineShapes.Count).Select
my_word.Selection.InsertCaption Label:="Figure", TitleAutoText:="InsertCaption1", _
Title:=":", Position:=wdCaptionPositionBelow, ExcludeLabel:=0
只是为null
分配默认值,就像您对任何其他参数一样。
这是一种聪明的方法来确定该类型是否实际上是ev
:
Int
诀窍是,当编译器看到 def isInt[T](implicit ev: T =:= Int = null): Boolean = env != null
isInt[Int] // true
isInt[String] // false
时,它会传递实际的隐含值,当它找不到时,它就会将其保留为默认值。
因此,通过检查Int
是否为ev
,您可以判断隐含在呼叫站点是否可用。