假设我有以下
class SimpleClass (myInt: Int, myString: String) {
}
以下是什么问题?
val mySimple = new SimpleClass(1, "hi")
println(mySimple.myInt)
答案 0 :(得分:28)
如果您希望构造函数参数作为类的字段可用,则必须将它们声明为墙或变量:
class SimpleClass (val myInt: Int, val myString: String) {
}
答案 1 :(得分:21)
Scala定义的java等价物是:
public class SimpleClass {
public SimpleClass( int myInt, String myString ) {
}
}
没有奇迹它不起作用......
嘿老兄,这是你的第17个scala问题,你仍然对语言的基础知识感到困扰。也许你应该花一个下午阅读一些在线教程(或一些书)来巩固你的知识。我可以建议:答案 2 :(得分:16)
对于完整的POJO体验™,包括toString
的相等,hashCodes和理智的实现......你需要案例类:
case class SimpleClass(myInt: Int, myString: String)
val mySimple = SimpleClass(1, "hi")
println(mySimple.myInt)
案例类的参数自动变为val。如果你愿意的话,可以明确地将它们变成vars,但是这种事情在Scala中通常是不受欢迎的 - 其中不可变对象受到青睐。
答案 3 :(得分:3)
问题是您正在调用SimpleClass.myInt
getter方法,但是您没有在任何地方定义getter方法。您需要定义SimpleClass.myInt
getter方法,甚至更好,让Scala自动为您定义:
class SimpleClass(val myInt: Int, myString: String) {}