ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 스칼라의 리스트(List)
    카테고리 없음 2024. 8. 31. 23:14

    스칼라의 List는 불변(immutable)이며, 여러 유용한 메서드와 연산을 제공한다.
     
    리스트는 다음과 같이 정의한다.
    val x: List[Int] = Nil
    val y: List[Int] = List(1, 2, 3, 4)
     
    Nil은 빈 리스트를 나타낸다. 즉, x는 요소가 하나도 없는 Int 타입 리스트다.
    y는 1, 2, 3, 4라는 요소들을 가진 Int 타입의 리스트다. 스칼라에서는 리스트를 만들 때 List()를 사용한다.
     
    이제 리스트에 요소를 추가하는 법을 알아보자
     
    42 :: y
     
    :: 연산자는 리스트의 앞에 요소를 추가하는 연산자다.
    여기서는 42를 y 리스트의 앞에 추가해서 새로운 리스트를 만든다.
    결과는 List(42, 1, 2, 3, 4)가 된다.
    이 연산은 불변 리스트의 특성에 따라 새로운 리스트를 반환하고, 기존 리스트 y는 그대로 유지된다.
     
    리스트를 뒤집을 수도 있다.
     
    y.reverse
     
    리스트의 요소 순서를 반대로 뒤집은 새로운 리스트를 반환한다.
    이 경우, List(4, 3, 2, 1)이 반환된다.
     
    리스트에 특정 요소가 포함되어 있는지 확인하려면 다음과 같이 작성해주면 된다.
     
    y.contains(1)
     
    리스트 y에 1이라는 요소가 포함되어 있는지 확인한다.
    포함되어 있으면 true, 아니면 false를 반환한다.
    이 경우, y에 1이 포함되어 있으므로 true가 반환된다.
     
    리스트의 각 요소에 대해 연산을 적용할 수도 있다.
     
    y.map(_ * 2)
     
    map 메서드는 리스트의 각 요소에 대해 주어진 함수를 적용해 새로운 리스트를 반환해준다.
    여기서 _ * 2는 각 요소를 2배로 만드는 함수를 의미한다.
    결과는 List(2, 4, 6, 8)이 된다.
     
    리스트의 모든 요소를 결합하여 값을 생성할 수 있다.
     
    y.foldLeft(0)(_ + _)
     
    이건 좀 신기하게 생겼다
    foldLeft는 리스트의 모든 요소를 왼쪽에서 오른쪽으로 누적하면서 결합해 하나의 값을 만들어낸다.
    종이를 오른쪽으로 접는다고 생각해보자.
    여기서 0은 초기 값이다.
    _ + _는 두 요소를 더하는 연산을 의미한다.
    이 경우, 리스트의 모든 요소를 더한 결과인 10이 반환된다.
     
    스칼라의 리스트는 불변이라, 연산을 수행할 때마다 새로운 리스트가 반환되고, 기존 리스트는 변경되지 않는 점 유의하자.
     
     
     
     
     

Designed by Tistory.