1. 리스트
같은 타입의 객체로 이뤄진 변경 불가능한 시퀀스를 위해서는 스칼라의 List 클래스를 사용할 수 있다.
스칼라의 리스트인 scala.List는 변경 불가능하다는 점에서 자바의 java.util.List 타입과 다르다.
스칼라의 리스트는 함수 스타일의 프로그래밍을 위해 설계한 클래스다.
다음은 스칼라의 리스트를 만드는 방법이다.
val oneTwoThree = List(1, 2, 3)
리스트의 내용을 변경하는 척, 새 값을 갖는 리시트를 새로 만들어 반환하는게 스칼라의 리스트 특징.
':::'라는 메소드는 두 리스트를 이어붙인다.
val oneTwo = List(1, 2)
val threeFour = List(3, 4)
val oneTwoThreeFour = oneTwo ::: threeFour
println(oneTwo + " and " + threeFour + " were not mutated.")
println("Thus, " + oneTwoThreeFour + " is a new list.")
결과:
'콘즈(cons)'라 부르는 '::' 연산자는 새 원소를 기존 리스트의 맨 앞에 추가한 새 리스트를 반환한다.
val twoThree = List(2, 3)
val oneTwoThree = 1 :: twoThree
println(oneTwoThree)
결과:
빈 리스트를 Nil이라 쓸 수 있다.
2. 튜플
리스트와 마찬가지로 변경 불가능하지만 튜플에는 각기 다른 타입의 원소를 넣을 수 있다.
여러 객체를 반환해야 할 때 유용. 마치 자바의 dto처럼.
생겨먹은건 리스트랑 비슷한데, 접근은 ._1, ._2 로 가능하다. 인덱스는 1부터 시작한다.