리스트는 List(element1, element2, ...)
와 같이 생성합니다.
스칼라의 기본 List
는 scala.collection.immutable.List
이므로 값을 변경할 수 없는 속성을 가지고 있습니다. 즉, 리스트에 값을 추가하거나 제거하는 작업은 원래 리스트에 반영되는 게 아닙니다. 해당 변경사항을 반영한 새로운 리스트를 만들어내는 방식으로 동작합니다.
기본 List
는 Linked list로 구현됩니다.
1234567891011121314151617181920212223242526272829303132333435 object LearnScala { def main(args: Array[String]): Unit = { // List[Any](기본 리스트를 사용하므로 Immutable) val list = List("a", 1, true) // ① 값을 읽어올 수는 있지만 val firstItem = list(0) // 아래줄과 같이 값을 변경할 수는 없음 // list(0) = "b" println(s"① $firstItem") // ② 앞에 붙이기는 :: 또는 +: 연산자 // 리스트 두개를 붙이기는 ++ 또는 :::연산자 // 뒤에 붙이기는 :+연산자(immutable list에서 효율적인 방법이 아님) val concatenated = 0 :: list ++ list :+ 'z' println(s"② $concatenated") val concat = 0 +: list:+ 10 println(s"$concat") // ③ Diff val diffList = List(1,2,3,4) diff List(2,3) println(s"③ $diffList") val diffRange = (1 to 10) diff (1 to 10 by 2) println(s"diffRange : $diffRange") //④ 배열의 Find와 같은 방식으로 동작 val personList = List(("솔라",1), ("문별",2), ("휘인",3)) def findByName(name:String) = personList.find(_._1 == name).getOrElse(("화사",4)) val findSolar = findByName("솔라") //값("솔라",1)을 찾아서 넘겨줌 val findSun = findByName("태양") //값이 없으므로 getOrElse에 있는 값("화사",4)이 들어감 println(s"④ ${findSolar}, ${findSun}") }} cs
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | object LearnScala { def main(args: Array[String]): Unit = { // List[Any](기본 리스트를 사용하므로 Immutable) val list = List("a", 1, true) // ① 값을 읽어올 수는 있지만 val firstItem = list(0) // 아래줄과 같이 값을 변경할 수는 없음 // list(0) = "b" println(s"① $firstItem") // ② 앞에 붙이기는 :: 또는 +: 연산자 // 리스트 두개를 붙이기는 ++ 또는 :::연산자 // 뒤에 붙이기는 :+연산자(immutable list에서 효율적인 방법이 아님) val concatenated = 0 :: list ++ list :+ 'z' println(s"② $concatenated") val concat = 0 +: list:+ 10 println(s"$concat") // ③ Diff val diffList = List(1,2,3,4) diff List(2,3) println(s"③ $diffList") val diffRange = (1 to 10) diff (1 to 10 by 2) println(s"diffRange : $diffRange") //④ 배열의 Find와 같은 방식으로 동작 val personList = List(("솔라",1), ("문별",2), ("휘인",3)) def findByName(name:String) = personList.find(_._1 == name).getOrElse(("화사",4)) val findSolar = findByName("솔라") //값("솔라",1)을 찾아서 넘겨줌 val findSun = findByName("태양") //값이 없으므로 getOrElse에 있는 값("화사",4)이 들어감 println(s"④ ${findSolar}, ${findSun}") } } | cs |
출력 〉 | ① a ② List(0, a, 1, true, a, 1, true, z) List(0, a, 1, true, 10) ③ List(1, 4) diffRange : Vector(2, 4, 6, 8, 10) ④ (솔라,1), (화사,4) |
'Scala' 카테고리의 다른 글
[스크랩]어떤 프로그래밍 언어들이 함수형인가? (0) | 2019.02.26 |
---|---|
[스크랩]함수형 프로그래밍이란 무엇인가? (0) | 2019.02.26 |
Part6 Collection) Array (0) | 2019.02.23 |
Part5 제어문) if문 (0) | 2019.02.23 |
Part5 제어문) 중첩 반복문 (0) | 2019.02.23 |