たとえば、この関数を書くと:
def function1() : Unit = {
aVar = myList.map { ( s :Something ) => (s.id, s.name) } toList
function2()
}
def function2() : Unit = {
//bla
}
コンパイラは、 expected but foundfunction2
と言って呼び出すと不平を言います。必要なものがどこから来たのかわかりません。Int
Unit
Int
さて、function1
次のように書くと、コンパイルして、期待どおりに動作します。
def function1() : Unit = {
aVar = myList.map { ( s :Something ) => (s.id, s.name) } toList
var x = function2()
}
どうして!!!!????に割り当てるだけで動作function2
がvar
変わりますか?? まずfunction2
、返すように定義されていUnit
ます...
次に、さらに複雑になります。次の 2 つの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()
}
ドットの代わりにスペースを入れると危険な場合があるように見えますが、その理由はわかりません。