2011-11-30 47 views
0

有什么办法可以在Scala中执行类似argument.<keyword>(function)的东西吗?将函数传递给Scala中的参数

例如:

[1,2,3].supply(myFunc)得到6如果myFunc的是求和函数。

如果我能够做到这一点,链接函数似乎更容易,而不是计算某些内容并将其“包装”到函数调用的参数中。

回答

3

你可以自己定义它,如果你想要的。它经常被称为 “管道运营商”:

class AnyWrapper[A](wrapped: A) { 
    def |>[B](f: A => B) = f(wrapped) 
} 
implicit def extendAny[A](wrapped: A): AnyWrapper[A] = new AnyWrapper(wrapped) 

然后:

def plus1(i: Int) = i + 1 
val fortyTwo = 41 |> plus1 
+1

'A <:任何'都不会真的限制太多,是吗? –

+0

@RexKerr呃,我真的不知道为什么我认为这值得添加!我已将其删除。 –

0

你的意思是这样的:

val sum = { (a: Int, b: Int) => a + b } 

List(1, 2, 3).reduceLeft(sum) 
+0

这是特定于求和函数。我想要像'<任意的arg> .appliedTo(<任意的fn>)',这会和'<任意的fn>。(<任意的arg>)'具有相同的效果。是否有一个与“appliedTo”功能相同的关键字? –