특성
1. immutable (Array는 mutable)
2. recursive 지원 (Arrary는 미지원)
3. covariant - if S is subtype of T이면 List[S]도 List[T]의 subtype.
=> 이로 인해, List() (List[Nothing]) 이 List[S나 T]의 subtype 이 된다.
head와 tail
- head는 첫 아이템이고 tail은 나머지 모든 아이템.
List 생성
$ val abc: List[String] = List("a","b","c")
$ val fruit = "ora" :: "pea" :: "apples" :: Nil (이 경우에는 Nil이 꼭 필요)
패턴지정 (위에서 fruit가 지정되어 있는 경우)
$ val List(a,b,c) = fruit 이런형태로 지정해서 a,b,c 를 자동 입력도 가능 (a="ora"가 됨)
:: (cons 연산자)
- scala내의 class로도 존재하고, List내의 method로도 존재.
(class로 존재하기 때문에 x :: xs 가 ::(x,xs) 로 취급됨.