5
A
回答
12
1
在你的情況Null
是Ident
和AnyRef
是它的超類型的子類型。在沒有這個邊界的所有類型的常見的亞型是Nothing
,但您可以指定它是Null
,用的是所有對象的亞型時,沒有什麼是一切的一種亞型(包括的int,long等)
之類的東西類型系統中使用空和無,基本上是類型(Contra/Co)方差。例如:
sealed trait Container[+A >: Null <: AnyRef]
case class Full[A >: Null <: AnyRef](value: A) extends Container[A]
case object Empty extends Container[Null]
這個編譯器完美
val c: Container[String] = Full("String")
val e: Container[String] = Empty
但失敗了,因爲我們的下限是零和上是AnyRef:
val ff: Container[Int] = Full(10)
val f: Container[Int] = Empty
我們不能把Int
這裏怎麼一回事,因爲這類型違反約束條件
7
要添加到@塞尼亞的回答是:這不是一個類型聲明,這是一個抽象類型成員聲明,在上下文中找到喜歡
trait Foo { // or perhaps class
type Ident >: Null <: AnyRef
}
並且意味着Foo
的任何具體實現必須定義某種類型爲Ident
,這種類型必須滿足@ senia的答案中描述的限制。
+0
是的,這個類型定義屬於特徵 – Pooya
相關問題
- 1. <>是什麼意思?
- 2. <>是什麼意思?
- 3. <+>是什麼意思?
- 4. {< >}是什麼意思?
- 5. 在java中代表<< or > >>是什麼意思?
- 6. Scala - '=> SomeType'是什麼意思?
- 7. Ruby中的<>是什麼意思?
- 8. `return $ this-> foo()=== null`是什麼意思?
- 9. 在Java中,>>或<<是什麼意思?
- 10. 「$ <$ <CONFIG:Debug>:Release>」在cmake中是什麼意思?
- 11. 這是什麼意思(計算中的<< and > >>)?
- 12. 「<xs:sequence />」是什麼意思?
- 13. <meta - data>是什麼意思?
- 14. `Vec <T>`是什麼意思?
- 15. <[email protected]>是什麼意思?
- 16. jQuery。 $('<img/>')是什麼意思?
- 17. numeric_limits <double> :: digits10是什麼意思
- 18. Action <Action>是什麼意思?
- 19. <String,String>是什麼意思?
- 20. <namespace> :: class是什麼意思?
- 21. #include <crtdll/stddef.h>是什麼意思?
- 22. 「/// <exclude/>」是什麼意思?
- 23. FaultContract <T> - 這是什麼意思?
- 24. $(「<p/>」)是什麼意思?
- 25. ReactClass <*>是什麼意思?
- 26. 這是什麼意思? <variable> ==「」
- 27. Set <element>是什麼意思?
- 28. 「<cmake_binary_dir>/bin」是什麼意思?
- 29. <>運算符是什麼意思
- 30. ChannelFactory <T>(「*」)是什麼意思?
然後一個快速的後續問題(因爲我很好奇),是不是在這裏的下界是多餘的?由於'Null'是所有引用類型的子類型,並且類型已經將上限定義爲*任何引用類型*? –
謝謝,我知道層次結構,但我的問題是什麼意思這個命令 – Pooya
@PatrykĆwiek:我想是的。但是'Null'類型可以被視爲明確的警告,即值可能爲'null'。 – senia