斯卡拉菜鸟在这里。
这是我的简单 for 循环
def forExampleStoreValues = {
println(">>forExampleStoreValues");
val retVal = for{i <- 1 to 5 if i % 2 == 0} yield i;
println("retVal=" + retVal);
}
我的期望是当我调用它时,最后一个 val 将自动返回。但是,当我从 main 调用它时,
object MainRunner {
def main(args: Array[String]){
println("Scala stuff!"); // println comes from Predef which definitions for anything inside a Scala compilation unit.
runForExamples();
}
def runForExamples() {
val forLE = new ForLoopExample(); // No need to declare type.
println("forExampleStoreValues=" +forLE.forExampleStoreValues)
}
}
输出是:
>>forExampleStoreValues
retVal=Vector(2, 4)
forExampleStoreValues=()
因此,我尝试明确返回 retval。
def forExampleStoreValues = {
println(">>forExampleStoreValues");
val retVal = for{i <- 1 to 5 if i % 2 == 0} yield i;
println("retVal=" + retVal);
return retval;
}
这给出了:
method forExampleStoreValues has return statement; needs result type
所以我将函数签名更改为:
def forExampleStoreValues():Vector
这使:
Vector takes type parameters
在这个阶段,不知道该放什么,我想确保我没有做我不需要做的事情。