Sau*_*ade 3 generics functional-programming scala
我有以下功能,它将列表的头部设置为新值
def setHead[A](ls: List[A], ele: A):List[A] = {
ls match {
case Nil => ls
case x :: xs => ele :: xs
}
}
Run Code Online (Sandbox Code Playgroud)
用它调用后输出
println(setHead(List(-1,-2,-3,4,5,6), (x :Int) => x < 0))
Run Code Online (Sandbox Code Playgroud)
是
List(<function1>, -2, -3, 4, 5, 6)
Run Code Online (Sandbox Code Playgroud)
但该函数采用类型'A'参数,我传递一个类型为'Int'的列表和一个函数,然后如何编译和运行,因为类型'A'不能同时为Int.
无论Int和Int => Boolean继承Any,这是Scala的类层次结构的根:
Int继承自AnyVal,继承自Any.Int => Boolean继承自AnyRef,继承自Any.我们可以通过几种方式检查Scala REPL中表达式的类型:
scala> def setHead[A](ls: List[A], ele: A):List[A] = ls match {
| case Nil => ls
| case x :: xs => ele :: xs
| }
setHead: [A](ls: List[A], ele: A)List[A]
scala> setHead(List(-1,-2,-3,4,5,6), (x :Int) => x < 0)
res0: List[Any] = List($$Lambda$1256/1374785073@3290b1a6, -2, -3, 4, 5, 6)
scala> :type setHead(List(-1,-2,-3,4,5,6), (x :Int) => x < 0)
List[Any]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |