我必须定义一个二阶函数,它将函数作为参数。
在我的应用程序中,输入函数可以有任何输入类型,但输出类型必须是指定的类型(假设为 Int,这并不重要)。
我定义二阶函数有:
def sof(f : (Any => Int) ) = {...}
现在,如果我有一个函数 f : Int => Int
,并且我调用:
sof(f)
我得到:
found : Int => Int
required: Any => Int
我想我误解了 Any 类型的含义。
我怎样才能让它发挥作用?
最佳答案
Scala 中函数的参数是逆变的。这意味着 Int => Int
不是 Any => Int
的子类型,反之亦然。想象一下以下情况:您将一个字符串传递给 Any => Int
函数(实际上是由 Int => Int
函数实现的)。 Int => Int
如何处理 String 参数?
关于scala - 如何将函数与任何输入一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28770957/