从Groovy迁移到Scala,到目前为止爱Scala。我非常想念Groovy的一件事是,我可以在对象上定义属性/字段,然后只需引用它们而不需要其他类的getter。
例如,在Java中:
public class Fizz {
private String buzz;
public Fizz(String buzz) {
super();
setBuzz(buzz);
}
// Getters and setters for buzz
}
但是在Groovy中:
class Fizz {
String buzz
}
然后我可以从不同的类中引用buzz
,如下所示:
void someMethod(Fizz fizz) {
if(fizz.buzz == "gnarly!") {
...
}
}
然而,似乎Scala不会这样做,你必须满足于此:
class Fizz(buzz : String) {
...
}
def someMethod(fizz : Fizz) : Unit = {
if(fizz.getBuzz.eq("gnarly!")) {
...
}
}
要使我的Scala代码“ Groovier ”(对于这个用例),我已经决定在我的一些Scala类中添加“helper”方法:
class Fizz(buzz : String) {
def buzz() : String = { this.buzz }
}
现在允许我像这样访问它们:
def someMethod(fizz : Fizz) : Unit = {
if(fizz.buzz.eq("gnarly!")) {
...
}
}
我的问题: Scala是否有任何其他机制/设备可以让我完成上述所需的行为而无需编写我所谓的“辅助方法”?
答案 0 :(得分:3)
实际上确实如此。看看这个nice示例。根据您在主构造函数中声明参数的方式,您将获得以下行为:
宣言获取者?二传手?
----------- ------- -------
var是是
val是否
默认不是否
此处,default
表示您实际上没有val
或var
声明类参数。因此,只需将val
置于其前面,即可立即公开访问该字段。
我希望这有用。