例如,如果我写这个函数:
def function1() : Unit = {
aVar = myList.map { ( s :Something ) => (s.id, s.name) } toList
function2()
}
def function2() : Unit = {
//bla
}
编译器在调用时会抱怨function2
expecting Int
but found Unit
。我只是无法弄清楚所需的Int
来自哪里。
现在,如果我function1
按如下方式编写,它将完全按照我的预期编译和工作:
def function1() : Unit = {
aVar = myList.map { ( s :Something ) => (s.id, s.name) } toList
var x = function2()
}
为什么!!!!????只是分配function2
一个var
改变行为?首先function2
定义为返回Unit
...
接下来它变得更加纠结,接下来的两个function1
定义中的任何一个都可以完美地工作:
def function1() : Unit = {
aVar = myList.map { ( s :Something ) => (s.id, s.name) }.toList
function2()
}
def function1() : Unit = {
aVar = (myList.map { ( s :Something ) => (s.id, s.name) } toList)
function2()
}
看起来有一个空格而不是一个点有时可能很危险,但我不知道为什么。