# Python
squares = {x: x*x for x in range(5)}
val squares = (for (x <- 0 until 5) yield (x, x * x)).toMap
이 코드는 0 until 5에서 각 값을 순회하고 (키, 값) 쌍을 생성한 후 yield로 반환하여 Map을 만들고, toMap을 사용해 Map으로 변환합니다.
따라서, Scala에서는 for와 yield를 활용하여 간결하게 Map을 생성할 수 있습니다.
val squares = (0 until 5).map(x => x -> (x * x)).toMap
0 until 5는 Range(0, 1, 2, 3, 4)를 생성합니다.map 함수는 각 요소에 대해 (키, 값) 쌍을 생성합니다. 여기서 x -> (x * x)는 튜플 (x, x * x)를 생성하는 구문입니다.toMap을 호출하여 이 튜플들의 리스트를 Map으로 변환합니다.Scala에서 foldLeft를 사용하여 Map을 생성하는 방법은 초기 값을 빈 Map으로 설정한 후, 범위나 리스트의 각 요소를 순회하면서 Map에 (키, 값) 쌍을 추가하는 방식입니다. foldLeft는 누적 변수를 사용해 하나씩 값을 축적해 나가므로 이를 통해 Map을 생성할 수 있습니다.
val squares = (0 until 5).foldLeft(Map[Int, Int]()) { (acc, x) =>
acc + (x -> (x * x))
}
0 until 5는 Range(0, 1, 2, 3, 4)를 생성합니다.foldLeft는 초기 값으로 빈 Map[Int, Int]()을 설정합니다.(acc, x)는 현재까지의 누적된 Map(acc)과 범위의 현재 값(x)을 인자로 받습니다.acc + (x -> (x * x))는 기존의 Map에 새로운 (x, x * x) 항목을 추가한 새로운 Map을 반환합니다.Scala의 collect를 활용하여 Map을 생성하는 방법은 패턴 매칭을 사용해 (키, 값) 쌍을 생성하고, 이를 Map으로 변환하는 방식입니다. collect는 PartialFunction을 기반으로 동작하므로, 특정 조건이나 변환 로직이 필요한 경우에 유용합니다.
val squares = (0 until 5).collect {
case x => x -> (x * x)
}.toMap