function - 如何将 Scala 函数作为函数传递给另一个函数?

标签 function scala

我只是不明白如何从以前的函数构建一个函数。

例如,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/

相关文章:

scala - 无法在Phusion/baseimage上安装Scala

function - 如何使用任意类型作为函数参数?

java - 如何在函数参数中使用全局变量?

javascript - 我不明白 javascript 中的函数返回

c++ - 无法为 C++ 函数模板分配较短的名称

java - 仅在 Spark 中可见的 Shapeless 中的 NoSuchMethodError

ide - Eclipse Scala IDE 中的 Scala-Lift 项目错误

scala - 如何在 Scala For 循环中添加多个 if 子句

Javascript:如何获取函数内的父键?

sql-server - SparkSQL MS SQL Server,编译后获取消息 "No suitable driver"