문제

저는 스칼라를 처음 접했고 map, flatMap 및/또는 이해를 위해 다음 작업을 수행하고 싶습니다.

목록이 있습니다. l = List[List[T]].예를 들어, l = [[1,2,3],[2,4,6,4],[3,4,6,2,3]].내부의 각 목록은 l 다양한 길이를 가질 수 있습니다.

지금 나 한테있어 val x: List[Int] = [1,2,3] 그리고 나는 어떤 작업을 하고 싶습니다 x 그리고 l 그 반환 [[1,1,2,3], [1,2,4,6,4], [1,3,4,6,2,3], [2,1,2,3], [2,2,4,6,4], [2,3,4,6,2,3], [3,1,2,3], [3,2,4,6,4], [3,3,4,6,2,3]] (하위 목록의 순서는 중요하지 않습니다.)

이 작업을 수행하려면 map이나 flatMap 또는 for-loop를 사용해야 할 것 같지만 오랜 시간 동안 시도한 후에도 올바른 유형을 얻을 수 없습니다.누구든지 도와줄 수 있나요?

도움이 되었습니까?

해결책

scala> val ls = List(List(1,2,3),List(2,4,6,4),List(3,4,6,2,3))
ls: List[List[Int]] = List(List(1, 2, 3), List(2, 4, 6, 4), List(3, 4, 6, 2, 3))

scala> val xs: List[Int] = List(1,2,3)
xs: List[Int] = List(1, 2, 3)

scala> for(x <- xs; l <- ls) yield x +: l
res22: List[List[Int]] = List(List(1, 1, 2, 3), List(1, 2, 4, 6, 4), List(1, 3, 4, 6, 2, 3), List(2, 1, 2, 3), List(2, 2, 4, 6, 4), List(2, 3, 4, 6, 2, 3), List(3, 1, 2, 3), List(3, 2, 4, 6, 4), List(3, 3, 4, 6, 2, 3))

다른 팁

x.flatMap(i => l.map(i::_))
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top