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

pup*_*ies 2 scala function

我只是不了解如何从以前的函数构建函数.

例如,math.min()至少需要两个数字的函数.如果我想创建一个函数min3Z(a:int, b:int, c:Int)怎么办?我将如何构建它min

Zei*_*yth 7

你的问题不清楚.你只是想利用math.min()min3Z()?因为在这种情况下,你可以这样做:

def min3Z(a: Int, b: Int, c: Int) = math.min(a, math.min(b, c))
Run Code Online (Sandbox Code Playgroud)

如果要传入任意函数(例如,使其可以指定max或min),可以将函数指定为参数:

def min3Z(a: Int, b: Int, c: Int, f: (Int, Int) => Int) = f(a, f(b, c))
Run Code Online (Sandbox Code Playgroud)

(Int, Int) => IntScala中的语法是一个函数的类型,它接受两个类型的参数Int并返回类型的结果Int.math.min()math.max()这两种符合这一标准.

这允许您将min3Z称为min3Z(1, 2, 3, math.min)min3Z(1, 2, 3, math.max).甚至可以制作一个版本,min3Z()它需要任意数量的Ints和任意(Int, Int) => Int函数,但这超出了你的问题的范围.