我想编写一个简单的方法,将函数作为参数然后执行它。
def exec(f: (a:Int, b:Int) => Boolean): Boolean = f(a,b)
我不确定上面有什么问题,但我收到了错误:
<console>:1: error: ')' expected but ':' found.
答案 0 :(得分:8)
def exec(f: (Int, Int) => Boolean): Boolean = f(a, b)
看起来应该更像:
f
现在(Int, Int) => Boolean
是一个函数a
。但这并没有编译,因为b
和def 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
)类似的东西可能是您正在考虑的内容?
|>