在Scala [2.11.6]中,是否可以根据另一个函数的值计算一个函数param?

时间:2015-08-26 19:04:24

标签: scala

虽然您可以使用函数的默认值:

def someFunc(aLong: Long = 0l) {}

在设置第二个参数时,是否有可能以某种方式引用aLong的值?

def someFunc(aLong: Long = 0l, optObj: Option[SomeObject] = Option(SomeObject(aLong)) {}

当然这是一个完全捏造的例子,因为在这种情况下,您可能只是传递SomeObject(aLong)并从函数体中的Long中提取SomeObject值。

这个问题仍然存在,因为我想知道这是否可行,以及是谁完成的。

如果您尝试编译以上内容,编译器会抱怨找不到aLong

尽管如此,我相信我曾经绊过这是如何完成的(早期或晚期初始化它可能已被调用,它可能起诉括号{}作为过程的一部分,因为"任何事情&#34 ;可以是Scala中的表达式。

我想知道是否有人可以阐明这一点,它是如何完成的,以及如果有的话,这是做什么的陷阱?

1 个答案:

答案 0 :(得分:2)

这是允许的,但它们必须在单独的参数列表中:

def someFunc(aLong: Long = 0l)(optObj: Option[SomeObject] = Option(SomeObject(aLong))) {}

我没有特别的陷阱。