gpt4 book ai didi

scala - Scala 中 f(a,b) 和 f(a)(b) 之间的区别

转载 作者:行者123 更新时间:2023-12-03 03:05:28 25 4
gpt4 key购买 nike

我对 Scala 非常陌生。我正在读 Paul Chiusano 和 Rúnar Bjarnason 写的一本名为《scala 函数式编程》的书。到目前为止我觉得很有趣。我看到了 curry 和 uncurry 的解决方案

def curry[A,B,C](f: (A, B) => C): A => (B => C)= {
a => b => f(a,b)
}

def uncurry[A,B,C](f: A => B => C): (A, B) => C = {
(a,b) => f(a)(b)
}

在 Curry 中,我理解 f(a,b),它会产生类型 C 的值,但在 uncurry 中,我不理解 f(a)(b)。谁能告诉我如何阅读 f(a)(b) 或这如何导致 C 类型,或者请向我推荐一些可以向我解释这一点的在线 Material ?

感谢您的帮助。

最佳答案

基本上,f(a) 的返回类型是一个 B => C 类型的函数,让我们将此结果称为 g。如果您随后调用 g(b),您将获得 C 类型的值。f(a)(b) 可以扩展为 f.apply(a).apply(b)

关于scala - Scala 中 f(a,b) 和 f(a)(b) 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38746355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com