如何将函数应用于元组?
这应该是一个容易的。 我如何将函数应用于Scala中的元组? 即:
scala> def f(i:Int,j:Int)= i + j
f:(Int,Int)Int
scala> val p =(3,4)
p:(Int,Int)=(3,4)
scala> fp
:6:错误:对象$ iw中的方法f缺less参数;
如果你想把它作为一个部分应用的函数,可以用`_'来实现
FP
^
scala> f _ p
:6:错误:值p不是(Int,Int)=> Int的成员
f _ p
^
scala>(f _)p
:6:错误:值p不是(Int,Int)=> Int的成员
(f _)p
^
scala> f(p)
:7:错误:方法f的参数数量错误:(Int,Int)Int
F(p)的
^
scala> grr!
提前谢谢了。
在Scala 2.7中:
scala> def f (i : Int, j : Int) = i + j f: (Int,Int)Int scala> val ff = f _ ff: (Int, Int) => Int = <function> scala> val fft = Function.tupled(ff) fft: ((Int, Int)) => Int = <function>
在斯卡拉2.8:
scala> def f (i : Int, j : Int) = i + j f: (i: Int,j: Int)Int scala> val ff = f _ ff: (Int, Int) => Int = <function2> scala> val fft = ff.tupled fft: ((Int, Int)) => Int = <function1>
跟在另一个答案,可以写(用2.11.4testing):
scala> def f (i: Int, j: Int) = i + j f: (i: Int, j: Int)Int scala> val ff = f _ ff: (Int, Int) => Int = <function2> scala> val p = (3,4) p: (Int, Int) = (3,4) scala> ff.tupled(p) res0: Int = 7
参见def tupled:((T1,T2))⇒R :
创build此函数的元组版本:而不是2个参数,它接受一个单一的scala.Tuple2参数。
scala> def f (i: Int, j: Int) = i + j f: (i: Int, j: Int)Int scala> val p = (3,4) p: (Int, Int) = (3,4) scala> val ft = (f _).tupled ft: ((Int, Int)) => Int = <function1> scala> ft apply(p) res0: Int = 7