Rod*_*igo 0 functional-programming scala
以下Scala代码:
val l = List((1,2),(2,3),(3,4))
def fun1(t1: Int,t2: Int) = (t1+1,t2)
l map fun1
Run Code Online (Sandbox Code Playgroud)
给出错误:
Error:(3, 8) type mismatch;
found : (Int, Int) => (Int, Int)
required: ((Int, Int)) => ?
l map fun1;}
^
Run Code Online (Sandbox Code Playgroud)
我想知道为什么map必须有一个codomain没有推断类型的函数...
这不是在陪域,这是错误的函数arity.The方法map愿与单参数的函数,即使这种说法是一个元组:
((Int, Int)) => (Int, Int) // Function[(Int, Int), (Int, Int)]
Run Code Online (Sandbox Code Playgroud)
但是你传递的函数有两个参数(两个int):
(Int, Int) => (Int, Int) // Function2[Int, Int, (Int, Int)]
Run Code Online (Sandbox Code Playgroud)
这样做:
def fun1(t: (Int, Int)) = (t._1+1, t._2)
l map fun1
Run Code Online (Sandbox Code Playgroud)
或这个:
def fun1(t1: Int,t2: Int) = (t1+1,t2)
l map { case (x, y) => fun1(x, y) }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
120 次 |
| 最近记录: |