【发布时间】:2011-05-01 22:40:49
【问题描述】:
好的,这个问题可能不会说太多,但这是交易: 我正在学习 scala 并决定使用一个接收名称参数函数的方法创建一个实用程序类“FuncThread”(我猜它被称为是因为它是一个函数但没有参数列表),然后启动一个可运行的线程它依次执行传递的函数,我写了这样一个类如下:
class FuncThread
{
def runInThread( func: => Unit)
{
val thread = new Thread(new Runnable()
{
def run()
{
func
}
}
thread.start()
}
}
然后我写了一个junit测试如下:
@Test
def weirdBehaivorTest()
{
var executed = false
val util = new FuncThread()
util.runInThread
{
executed = true
}
//the next line makes the test pass....
//val nonSense : () => Unit = () => { Console println "???" }
assertTrue(executed)
}
如果我取消注释第二条注释行,则测试通过,但如果仍然注释,则测试失败,这是正确的行为吗?名称参数函数如何以及何时执行?
我知道 Scala 有演员库,但我想尝试一下,因为我一直想在 Java 中这样做
【问题讨论】:
标签: scala