[scala] foldLeft, fodRight, reduceLeft, reduceRight, scanLeft, scanRight 함수 예제
scala 2017. 7. 24. 16:43스칼라의 콜렉션의 fold와 reduce와 scan 함수는 시간이 조금만 지나면 혼동되기 쉬운 것 같다.
accumulate 기능이 있어서 서로 비슷하게 생겼다..
List(1,2,3).foldLeft(100)((s,x) => s - x)
((100 - 1) - 2) -3 = 94
List(1,2,3).foldRight(100)((s,x) => s - x)
1 - (2 - (3 - 100)) = -98
List(1,2,3).reduceLeft((s,x) => s - x)
(1 - 2) - 3 = -4
List(1,2,3).reduceRight((s,x) => s - x)
1 - ( 2 - 3) = 2
List(1,2,3).scanLeft(100)((s, x) => s - x)
List(100, 100-1, (100-1)-2, (100-1)-2-3)
=> List(100, 99, 97, 94)
List(1,2,3).scanRight(100)((s, x) => s - x)
// index3 : 초기값 100
// index2 : 3 - 100 = -97
// index1 : 2 - -97 = 99
// index0 : 1 - 99 = -98
List(-98, 99, -97, 100)
'scala' 카테고리의 다른 글
[scala] scalablitz (0) | 2017.07.27 |
---|---|
[scala] 병렬 콜렉션 (par collection) (0) | 2017.07.24 |
[scala] 마이크로 벤치마킹 툴 - scala meter 예제 (0) | 2017.07.21 |
[scala] 콘솔에서 코드 붙여서 테스트하기 (paste) (0) | 2017.07.21 |
[scala] DynamicVariable 예제 (0) | 2017.07.07 |