所以,我对 Scala 有点陌生,与其他语言相比,我不太了解它如何读取代码。
举这个简单的例子:
@main
def roll():Int =
var x:Int = (math.random*6+1).toInt
return x
def print =
for i <- 1 to 10 do
println(roll())
上面的代码没有返回任何内容,但是,如果我翻转方法(将 print“method”放在“roll”之前),它现在就可以工作了。我觉得这非常奇怪。我哪里做错了?我只是想调用一个随机化数字的方法/函数,并使用新函数来调用它来打印它。谁能帮帮我?
最佳答案
@main
annotation应用于方法(一,其后为以下内容),即 for :
@main
def roll():Int =
var x:Int = (math.random*6+1).toInt
return x
def print =
for i <- 1 to 10 do
println(roll())
您的 main 方法将是 roll
并且只有它会在程序执行期间被调用。 print
只是一个声明的方法,没有被调用。
当你“翻转它们”时:
@main
def print =
for i <- 1 to 10 do
println(roll())
def roll():Int =
var x:Int = (math.random*6+1).toInt
return x
print
成为 main 方法,因此它被调用,并在循环中调用声明的 roll
方法。
另请阅读annotations doc .
关于scala - 函数调用时不返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73563144/