虽然您可以使用函数的默认值:
def someFunc(aLong: Long = 0l) {}
在设置第二个参数时,是否有可能以某种方式引用aLong
的值?
def someFunc(aLong: Long = 0l, optObj: Option[SomeObject] = Option(SomeObject(aLong)) {}
当然这是一个完全捏造的例子,因为在这种情况下,您可能只是传递SomeObject(aLong)
并从函数体中的Long
中提取SomeObject
值。
这个问题仍然存在,因为我想知道这是否可行,以及是谁完成的。
如果您尝试编译以上内容,编译器会抱怨找不到aLong
。
尽管如此,我相信我曾经绊过这是如何完成的(早期或晚期初始化它可能已被调用,它可能起诉括号{}作为过程的一部分,因为"任何事情&#34 ;可以是Scala中的表达式。
我想知道是否有人可以阐明这一点,它是如何完成的,以及如果有的话,这是做什么的陷阱?
答案 0 :(得分:2)
这是允许的,但它们必须在单独的参数列表中:
def someFunc(aLong: Long = 0l)(optObj: Option[SomeObject] = Option(SomeObject(aLong))) {}
我没有特别的陷阱。