类参数变量赋值

时间:2016-01-27 20:57:02

标签: scala

我很难理解为什么varone,vartwo和varthree正在获得"未找到"错误:"未找到:值"

class Foo(varone : String, vartwo : String, varthree : Boolean)
{

}

我将Foo定义为:

{{1}}

我认为Scala会接受我的类参数并制作它们的字段?

我来自C ++背景,而变量构造函数中的赋值似乎很奇怪,但这就是我所遵循的例子暗示我做的事情。我可能只是给Foo一个构造函数并在那里完成我的作业,但我也想这样理解。

2 个答案:

答案 0 :(得分:2)

你可能想要的是一个案例类

case class Foo(varone : String, vartwo : String, varthree : Boolean)

这将为您创建所有变量,并提供等于,哈希,不变性,模式匹配的所有案例类优度

或者,如果您不想要案例类:

class Foo(val varone : String, val vartwo : String, val varthree : Boolean)

如果字段是val,Scala将为其生成getter方法。

您也可以将其声明为var,Scala将同时生成getter和setter。

如果字段没有var / val,如示例所示,Scala既不为字段生成getter也不生成setter方法。

答案 1 :(得分:1)

您必须将变量定义为scala的'val',以使它们成为类成员。或者您可以使用案例类。

使用'val':

class Foo(val varone : String, val vartwo : String, val varthree : Boolean)

使用案例类:

case class Foo(varone : String, vartwo : String, varthree : Boolean)