いろいろ検索しましたが、何も見つかりませんでした。このタイプのtype declarationScala での意味は何ですか?
type Ident >: Null <: AnyRef
いろいろ検索しましたが、何も見つかりませんでした。このタイプのtype declarationScala での意味は何ですか?
type Ident >: Null <: AnyRef
Keywordtypeは型エイリアスの宣言用でvalあり、anddefは値とメソッドの宣言用です。この場合、それは制約付きの抽象型エイリアスであるため、一部の型メンバーtraitまたはclass- ローカル スコープの型エイリアスは抽象化できず、制約を持つこともできません。
TypeIdentは のサブタイプAnyRefおよびスーパータイプですNull。
AnyRef
AnyRefInt、Longなどを除くすべての型Char(Java プリミティブ)のすべての参照型の祖先です。
ヌル
Nullすべての「nullable」タイプのサブタイプです。実際、これはすべての参照型のサブタイプです。
すべてAnyRefが null 可能であるため、唯一の追加の制約>: NullはIdentis notNothingです。
Scala の型階層を参照してください。

@seniaの答えに追加するには:これは型宣言ではなく、次のようなコンテキストで見つかった抽象型メンバー宣言です
trait Foo { // or perhaps class
type Ident >: Null <: AnyRef
}
and の具体的な実装でFooは、ある型を と定義する必要がありIdent、この型は @senia の回答で説明されている制約を満たさなければならないことを意味します。
あなたの場合Null、のサブタイプでIdentあり、AnyRefそのスーパータイプです。この境界がない場合、すべてのタイプの共通のサブタイプは ですがNothing、指定するとNull、 Nothing がすべてのサブタイプ (Int、Long などを含む) の場合、 with はすべてのオブジェクトのサブタイプになります。
Null や Nothing などは Type System で使用され、基本的には型 (Contra/Co) variance で使用されます。例:
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
しかし、下限が Null で上限が AnyRef であるため、これは失敗します。
val ff: Container[Int] = Full(10)
val f: Container[Int] = Empty
Intこのタイプは制約に違反しているため、ここに置くことはできません