我只是不明白如何从以前的函数构建一个函数。
例如,math.min()
函数取两个数中的最小值。如果我想创建一个函数 min3Z(a:int, b:int, c:Int)
怎么办?我如何从 min
构建它?
最佳答案
你的问题不清楚。您只是想在 min3Z()
中使用 math.min()
吗?因为在那种情况下,您可以:
def min3Z(a: Int, b: Int, c: Int) = math.min(a, math.min(b, c))
如果你想传入一个任意的函数(例如,让它可以指定最大值或最小值),你可以指定一个函数作为参数:
def min3Z(a: Int, b: Int, c: Int, f: (Int, Int) => Int) = f(a, f(b, c))
Scala 中的语法 (Int, Int) => Int
是一个函数的类型,它接受两个 Int
类型的参数并返回一个 类型的结果>整数
。 math.min()
和 math.max()
都符合这个标准。
这允许您将 min3Z 调用为 min3Z(1, 2, 3, math.min)
或 min3Z(1, 2, 3, math.max)
。甚至可以制作一个 min3Z()
版本,它接受任意数量的 Int
和任意 (Int, Int) => Int
功能,但这超出了您的问题范围。
关于function - 如何将 Scala 函数作为函数传递给另一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29737684/