【发布时间】:2017-11-08 21:11:14
【问题描述】:
我是 Scala 的新手,试图了解 Scala 的语法行为。如果有人帮助我,我将不胜感激。谢谢
使用匿名对象: 在这种情况下,如果我想在main 函数体中打印res 的值,那么我需要应用什么逻辑?
package oops
object AnonymousObject
{
def main(args:Array[String]):Unit =
{
new student().detail(5,9) // Line 1
}
}
class student
{
def detail(x:Int, y:Int):Int =
{
val res = x*y
println(res)
}
}
没有匿名对象:
更多信息,在下面给出的这个场景中,实现它没有问题,因为var s
class Student
{
var id:Int = 0; // All fields must be initialized
var name:String = null;
}
object MainObject
{
def main(args:Array[String])
{
var s = new Student() // Creating an object
println(s.id+" "+s.name);
}
}
【问题讨论】:
-
在第一种情况下,
class student无法编译。方法detail被注释为返回一个Int,所以它应该只是方法体中的x * y表达式而不是赋值语句。如果要在 main 中打印,请使用println(new student().detail(5,9)) -
@SamuelHeaney 嗨,谢谢,但不幸的是我尝试了这个
println(new student().detail(5,9)),但打印出来的是这个()而不是45 -
与其做
def detail(x: Int, y: Int): Unit = val res = x * y,不如试试def detail(x: Int, y: Int): Int = x * y。当前您正在返回 Unit,它将打印()。