【问题标题】:Scala - multiple function, returns multiple functionScala - 多个函数,返回多个函数
【发布时间】:2021-12-21 14:15:00
【问题描述】:

我开始学习 scala 的基础知识,但我在理解简单函数方面遇到了问题。我有三个任务要做。首先对我来说很容易,我知道它是如何工作的。但是接下来的两个我不明白我必须写什么才能返回。

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


def prod[A,B,C,D](f: A => C, g: B => D): (A, B) => (C, D) {
???????????
}


def lift[A,T](op: (T,T) => T)(f: A => T, g: A => T): A => T {
??????????
}

【问题讨论】:

  • 因为最好的办法是帮助您找出解决方案,而不是仅仅提供代码,所以我邀请您到Scala Discord server,以便我们可以为您提供更多互动帮助:)
  • 请编辑问题以将其限制为具有足够详细信息的特定问题,以确定适当的答案。

标签: scala generics


【解决方案1】:

让我们看一下类型,通过查看它们应该可以很容易地实现该方法。

prod开始,写输入参数和预期输出:

def prod[A,B,C,D](f: A => C, g: B => D): (A, B) => (C, D) = {
  (a: A, b: B) => {
    val c: C = ???
    val d: D = ???
    (c, d) 
  }
}

那么,你如何构建cd 给定你所拥有的(即fg)?

我让你自己回答这个问题。


同样适用于lift

def lift[A,T](op: (T,T) => T)(f: A => T, g: A => T): A => T {
  (a: A) => {
    val t: T = ???
  }
}

如果您不知道 lift 应该做什么,这可能会有点棘手。 提示:您可能必须使用fg,否则它们将不存在。那么从得到的值中,如何得到想要的输出类型呢?

【讨论】:

    猜你喜欢
    • 2018-07-16
    • 2014-04-23
    • 1970-01-01
    • 2020-12-17
    • 2020-03-20
    • 2020-12-06
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多