아래의 글은 마틴 오더스키,렉스 스푼,빌 베너스 공저 / 오현석,이동욱,반영록 공역, 『Programming in Scala 3/e』,에이콘출판사(2017), CH01의 내용을 기반으로 작성하였습니다.
리스트 특징
리스트는 변경 불가능
리스트 구조는 재귀적이지만, (즉 연결 리스트)
배열은 평면적이다
스칼라의 리스트 타입은 공변적 (covariant)
List[String]은 List[Object]의 서브타입
List[Nothing]은 List[T]의 서브타입
- 리스트 생성
Nil :: (cons)
List(1, 2, 3) 은 1 :: (2 :: (3 :: Nil)) 이라는 리스트 생성
val nums = 1 :: 2 :: 3 :: 4 :: Nil
- 리스트의 연산
head는 어떤 리스트의 첫 번째 원소를 반환
tail는 어떤 리스트의 첫 번째 원소를 제외한 나머지 원소로 이뤄진 리스트
isEmpty는 리스트가 비어 있다가 true 반환
::: 두인자는 리스트여서 xs ::: ys 는 xs의 모든 원소 뒤에 ys의 모든 원소가 오는 새로운 리스트
종류메소드
리스트 길이 | x.length |
리스트 양끝에 접근 | init, last |
리스트 뒤집기 | reverse |
접두사, 접미사 | drop, take, splitAt |
리스트 선택 | apply, indices |
리스트 펼치기 | flatten |
리스트 순서쌓 묶기 | zip, unzip |
리스트 출력 | toString, mkString |
리스트 변환 | iterator, toArray, copyToArray |
리스트 매핑 | map, flatmap, foreach |
리스트 filter | filter, partition, find, takeWhile, dropWile, span |
리스트 전체 술어 | forall, exists |
리스트 폴드 | /:, :\ |
리스트 정렬 | sortWith |
종류e메소드
리스트 만들기 | List.apply |
범위 리스트 만들기 | List.range |
균일한 리스트 | List.fill |
도표화 | List.tabulate |
여러 리스트 연결 | List.concat |
'독서관련 > Programming in Scala' 카테고리의 다른 글
Scala CH18. 변경 가능한 객체 (0) | 2020.03.29 |
---|---|
Scala CH17. 컬렉션 (0) | 2020.03.29 |
Scala CH15. 케이스 클래스와 패턴 매치 (0) | 2020.03.29 |
Scala CH14. 단언문과 테스트 (0) | 2020.03.29 |
Scala CH13. 패키지와 임포트 (0) | 2020.03.29 |