Scala方法,它将函数作为参数然后执行它

时间:2016-02-18 03:06:46

标签: scala

我想编写一个简单的方法,将函数作为参数然后执行它。

def exec(f: (a:Int, b:Int) => Boolean): Boolean = f(a,b)

我不确定上面有什么问题,但我收到了错误:

<console>:1: error: ')' expected but ':' found.

3 个答案:

答案 0 :(得分:8)

def exec(f: (Int, Int) => Boolean): Boolean = f(a, b)

看起来应该更像:

f

现在(Int, Int) => Boolean是一个函数a。但这并没有编译,因为bdef exec(a: Int, b: Int)(f: (Int, Int) => Boolean): Boolean = f(a, b) scala> exec(2, 3)(_ > _) res1: Boolean = false 没有定义。

您需要传入它们,或将它们修复为值。

success : function(json) {
    var obj = JSON.parse(JSON.stringify(json));
        display = obj;
            $.each(display, function(i) {
                alert(display[i].secretQuestion);
            });
}

答案 1 :(得分:0)

如果您想在exec方法中执行带参数的函数,则需要:

scala> def exec(f: => Unit) = {
     | println("Exec:")
     | f
     | }
scala> def foo(f : (Int, Int)): Unit = println(f._1 + f._2)
scala> exec(foo((3, 4)))
Exec:
7

因为foo((3, 4))类型为=> Unit

答案 2 :(得分:0)

不是原始问题的答案(而且评论太大了),但是如果你正在寻找一个有品位,漂亮的执行操作员并且不特别喜欢它的语法提供的答案,或许与func topMostController()-> UIViewController { var topController = UIApplication.sharedApplication().keyWindow?.rootViewController while((topController?.presentedViewController) != nil){ topController = topController?.presentedViewController } if(topController != nil){ return topController! } else{ return self } } 的管道操作员(scalaz)类似的东西可能是您正在考虑的内容?

|>