2015-11-27 49 views
0

我想要执行一个在scala中执行的函数。像Java世界中的Functor。在scala线程内部执行传递的函数参数

我的JavaScript,我会做它作为

function g(f, data) { 
    f() 
} 

g(function(){ 
    console.log('I must be printed') 
    }, 1000) 

我在斯卡拉试图与下面相同的,(但Java线程),它不会工作

object FunctionProgInHamiltonRoad { 

    def g(f: (String) => Unit): String = { 
    val task = new TimerTask { 
     override def run(): Unit = { 
     println("I'm printed in g inside thread hell") 
     f 
     } 
    } 
    new Thread(task).start() 

    println("finishing off g") 
    "printed in g" 
    } 

    def main(args: Array[String]) { 
     g((id : String) => {println("I must be printed in g.")}) 
    } 
} 

输出

整理掉g 我在g线里面打印地狱

但是传递的函数不会被执行。

回答

0
val task = new TimerTask { 
    override def run(): Unit = { 
    println("I'm printed in g inside thread hell") 
    f("") 
    } 
} 
如果要执行的功能

想:f()

(id : String) => {println("I must be printed in g.")}这个功能,应该需要一个参数exeucte,如:f(parameter)