스칼라를 배우려고하는데 부분적으로 적용된 함수보다 커링 함수를 사용할 때 혼란 스럽습니다.스칼라 함수를 부분적으로 적용한 함수와 부분적으로 적용되는 함수의 최적 사용 사례
나는 그 개념들이 중복되지 않았 음을 확신하지만, 나는 다른 접근법의 진정한 목적을 볼 수 없다.
이 코드를 실험 하였다:
List(2, 4, 6, 8)
List(3, 6)
: 모두 동일한 결과를 수득
object PartialFunctionTest extends App {
def filter(xs: List[Int], p: Int => Boolean): List[Int] =
if (xs.isEmpty) xs
else if (p(xs.head)) xs.head :: filter(xs.tail, p)
else filter(xs.tail, p)
def modN(n: Int, x: Int) = ((x % n) == 0)
val nums = List(1, 2, 3, 4, 5, 6, 7, 8)
println(filter(nums, modN(2,_)))
println(filter(nums, modN(3,_)))
}
:
object CurryTest extends App {
def filter(xs: List[Int], p: Int => Boolean): List[Int] =
if (xs.isEmpty) xs
else if (p(xs.head)) xs.head :: filter(xs.tail, p)
else filter(xs.tail, p)
def modN(n: Int)(x: Int) = ((x % n) == 0)
val nums = List(1, 2, 3, 4, 5, 6, 7, 8)
println(filter(nums, modN(2)))
println(filter(nums, modN(3)))
}
용액을 부분적으로 적용 용도 기능 :
해결 태닝을 사용
다른 접근 방법이 동일합니까?
누가 내게 계몽 할 수 있습니까? 각각에 가장 적합한 유스 케이스는 무엇입니까?
용어집 : modN (2, _)는 부분 기능이 아닙니다. 비슷한 이름에도 불구하고 똑같은 것은 아니지만 부분적으로 적용된 함수 *입니다. http://sandrasi-sw.blogspot.com/2012/03/understanding-scalas-partially-applied.html –