Scala中@main函数调用无返回值,调换方法顺序恢复正常的问题求助
问题分析与解决
你的问题核心是对Scala中@main注解的作用理解有误:
@main注解的作用是标记程序的入口方法,它只会作用在紧跟在它下方的那个方法上。- 你最初的代码里,
@main放在了roll方法上方,所以程序启动后只会执行roll方法(生成一个随机数但不会输出),根本不会调用print方法,自然看不到任何输出。 - 当你把
print方法移到roll前面时,@main就绑定到了print方法上,程序启动后执行print,循环调用roll打印随机数,所以能正常输出。
正确的写法示例
方式1:把@main标记到打印方法上
def roll(): Int = (math.random * 6 + 1).toInt @main def printRolls(): Unit = for i <- 1 to 10 do println(roll())
注:Scala中方法最后一行表达式的值就是返回值,不需要显式写return,也没必要额外定义变量x,可以直接简化代码。另外建议避免用print作为方法名,会和Scala标准库的print方法冲突。
方式2:用独立入口方法调用逻辑
def roll(): Int = (math.random * 6 + 1).toInt def printRolls(): Unit = for i <- 1 to 10 do println(roll()) @main def main(): Unit = printRolls()
这种写法把程序入口和业务逻辑分开,结构更清晰,也更符合常规的代码组织习惯。
内容的提问来源于stack exchange,提问作者Freeze Aim
相关产品推荐
相关产品推荐

