【发布时间】:2017-12-29 00:41:35
【问题描述】:
当尝试运行一个对数组类型进行抽象的多态函数时,我得到一个类型不匹配的错误消息:
类型不匹配:预期:(Int) => 布尔值,实际:Int
val listIntegers = List(55, 50, 25, 23, 21, 16, 15)
def abstractSearchKey[A](a: List[A], p: A => Boolean): Int = {
def loop(n: Int): Int ={
if (n > a.length) -1
else if (p(a(n))) n
else loop(n+1)
}
loop(0)
}
abstractSearchKey[Int](listIntegers, 25)
我对这个错误消息感到困惑,因为这个练习是基于 Chiusano 的 Scala 函数式编程。事实上,在第 24 页,作者指出:
...p 函数必须接受 A 类型的值(因为它是 A => Boolean 类型的函数)
非常感谢您对此事提出任何建议或反馈!
【问题讨论】:
标签: scala functional-programming polymorphism tail-recursion