스칼라의 List는 Immutable이기 때문에 List에 뭔가를 추가하는 것은 문제가 된다.
val l = List[Member]()
l += new Member
println(l.size)
이 코드는 실행 시 에러가 발생한다. 그 이유는 불변성을 중요하는 콜렉션 철학이 있다.
Error:(25, 5) value += is not a member of List[Member]
l += new Member
full qualied class name을 보려면 다음 코드를 사용한다.
println(List.getClass.getName)
결과는 scala.collection.immutable.List$이다.
자바처럼 변성을 가진 List를 구현하고 싶다면, 이름이 조금 긴 mutable.MutableList를 사용한다.
val list = mutable.MutableList[Member]()
list += new Member
list += new SchoolMember
println(list.size)
결과는 2이고, 컴파일/런타임의 에러는 발생하지 않는다.
'scala' 카테고리의 다른 글
[scala] sugar 의미 (0) | 2016.09.27 |
---|---|
[scala] 패턴 매칭 (pattern matching) 성능 주의 사항 (0) | 2016.09.26 |
[scala] class 4 - 타입 바운드(type bounds), 타입 변성(type variance) (0) | 2016.09.26 |
[scala] first class (0) | 2016.09.26 |
[scala] class 4 - Any/AnyRef, 커링(curring), 특화(specialization) (0) | 2016.09.23 |