isTen(null) // НЕ будет работать так как функция хочет примитив
genericIsTen((null) // будет работать
boxedIsTen(null) // НЕ будет работать так как функция хочет Int
Nil不是类型,而是对象Nil。该对象的类型是Nil.type。一个对象Nil是两个类后代之一,List并且在 type 的空列表中使用List。好吧,既然他是List-a的继承人,那么他所有的方法他都可以使用。
sealed abstract class List[+A] { /* ... */ }
case object Nil extends List[Nothing] { /* ... */ }
final case class ::[B]( /* ... */ ) extends List[B] { /* ... */}
def listIsTen(number: Int): List[Int] =
if (10 == number) List(number)
else Nil
这里写得好。我会补充一些东西,我会总结一些东西。
Nothing类型是最低类型。这意味着具有此类型的变量绝对可以分配给任何其他类型。
示例 1:
true
有一个类型Boolean
,抛出异常有一个类型Nothing
,并且由于它Nothing
是类型层次结构中的继承人Boolean
,所以结果是一个类型Boolean
。示例 2:
由于它
Nothing
是最低类型,这意味着在类型层次结构中,任何类型的继承者都可以Boolean
是泛型。示例 3:
与上面的示例类似,具有类型的对象
Box[Nothing]
很容易分配给类型Box[Int]
(由于协方差,即该特征具有加号)。推理,如您所见,
Nothing
当您需要一种类型被另一种类型接受时,使用类型。被另一种类型“磨损”。Null类型几乎是最低级的类型 。在类型层次结构中,它是所有对象的继承者,但不是所有基元的继承者。这意味着它将以与 Nothing 相同的方式为对象工作。
Nil不是类型,而是对象
Nil
。该对象的类型是Nil.type
。一个对象Nil
是两个类后代之一,List
并且在 type 的空列表中使用List
。好吧,既然他是List
-a的继承人,那么他所有的方法他都可以使用。None也不是类型,而是对象
None
。该对象的类型是None.type
。对象None
是两个类后代之一,Option
用作空变体Option
。