【问题标题】:Passing a function to an argument in Scala将函数传递给Scala中的参数
【发布时间】:2011-11-30 14:08:55
【问题描述】:

有没有办法在 Scala 中做类似argument.<keyword>(function) 的事情?

例如:

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

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

【问题讨论】:

    标签: function scala arguments chaining


    【解决方案1】:

    如果你愿意,你可以自己定义。它经常被称为“管道运算符”:

    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
    

    【讨论】:

    • A <: Any 并没有限制太多,是吗?
    • @RexKerr 呃,我真的不知道为什么我认为值得添加!我已将其删除。
    【解决方案2】:

    你的意思是这样的:

    val sum = { (a: Int, b: Int) => a + b }
    
    List(1, 2, 3).reduceLeft(sum)
    

    【讨论】:

    • 那是求和函数特有的。我想要<arbitrary arg>.appliedTo(<arbitrary fn>) 之类的东西,它的效果与<arbitrary fn>.(<arbitrary arg>) 相同。有没有和appliedTo作用一样的关键字?
    猜你喜欢
    • 1970-01-01
    • 2018-11-12
    • 2019-06-19
    • 2013-01-27
    • 2020-07-15
    • 1970-01-01
    • 2015-07-18
    • 2015-09-11
    • 1970-01-01
    相关资源
    最近更新 更多