Scala知识点

Scala中的None,Nothing,Null,Nil,null,Unit

  • Nil是一个空的List,定义为List[Nothing],根据List的定义List[+A],所有Nil是所有List[T]的子类
  • None是一个object,是Option的子类型
  • null 是Null的实例,类似java中的null
  • Nothing是所有类型的子类,也是Null的子类。Nothing没有对象,但是可以用来定义类型
  • 空(Null)是一个trait
  • Unit,类似java中的void,不返回任何值的方法的类型

Nothing:

1
2
3
4
5
6
7
8
9
10
11
12
13
// List [Nothing]分配给对List [String]的引用。Nothing是String的子类,所以正确
scala> val emptyStringList:List[String] = List[Nothing]()
emptyStringList: List[String] = List()


scala> val emptyStringList:List[Int] = List[Nothing]()
emptyStringList: List[Int] = List()
//虽然Nothing是所有东西的子类,但它不是任何东西的`超类`,也没有 Nothing的实例,包括字符串“abc”。所以Nothing的任何集合都必须是空的
scala> val emptyStringList: List[String] = List[Nothing]("abc")
^
error: type mismatch;
found : String("abc")
required: Nothing

Scala中的None,Nothing,Null,Nil

scala不使用new关键字创建对象实例

Scala 解惑篇