gpt4 book ai didi

Scala,组合具有两个值的函数

转载 作者:行者123 更新时间:2023-12-02 22:16:16 27 4
gpt4 key购买 nike

def adder(a:Int,b:Int):Int = {a+b}
def doubler(a:Int):Int = {a*2}
def doubleAdd = doubler _ compose adder

我收到错误:类型不匹配发现:(Int,Int)=>Int必需的: ? => 国际

然后,如果我只是尝试 d​​oubleAdd = doubler(adder _) 我会得到相同的错误,除了需要 Int 而不是 ? => 国际

有没有办法组合两个参数的函数?抱歉,如果这是非常基本的,我对这门语言还很陌生,而且我在任何地方都找不到带有两个参数的示例。

最佳答案

您正在尝试将 Function2(加法器)与 Function1 组合在一起,因此出现了问题。一种解决方法是将 Adder 的定义更改为柯里化(Currying)版本:

def adder(a: Int)(b: Int):Int = a + b

然后 doubleAdd 部分应用加法器,如下所示:

def doubleAdd(x: Int) = doubler _ compose adder(x)

底层发生的事情是将加法器从 Function2 (Int, Int) => Int 转换为 Function1 (Int) => (Int) => Int,或返回函数的函数。然后,您可以使用已应用的第一个参数来编写从加法器返回的函数。

关于Scala,组合具有两个值的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27110218/

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