Yoa*_*oav 6 static-methods scala case-class
我在Scala应用程序中有一个case类,并且我更喜欢在该类中编写静态函数,因为它最有意义.这是班级:
case class At (
date : DateTime,
id : String,
location : Coordinate
)
{
...
def getParsedValues(line : String) : At =
{
val mappedFields : Array[String] = Utils.splitFields(line)
val atObject = new At(mappedFields)
return atObject;
}
...
}
Run Code Online (Sandbox Code Playgroud)
然后从另一个Scala对象,我想将该方法getParsedValues()
称为静态方法:
object Reader{
...
var atObject = At.getParsedValues(line)
...
}
Run Code Online (Sandbox Code Playgroud)
但是它出错了 value getParsedEvent is not a member of object At
我怎样才能使它工作?谢谢
Sha*_*nds 13
在Scala中编写等效的Java静态方法的标准方法是将该方法添加到类的伴随对象中.所以:
case class At (
date : DateTime,
id : String,
location : Coordinate
)
object At
{
...
def getParsedValues(line : String) : At =
{
val mappedFields : Array[String] = Utils.splitFields(line)
val atObject = new At(mappedFields)
return atObject;
}
...
}
Run Code Online (Sandbox Code Playgroud)
然后像你在Reader
对象中那样调用它.
此外,您可能需要的构造函数变量Array[String]
可能更好地编码为同一个伴随对象中的工厂方法.然后,"静态"方法的中间行将删除new
关键字.此外,您可以将赋值放到atObject
和return atObject
行 - 方法的最后一个表达式的结果将自动作为方法的返回值.实际上,整个方法可以写成:
def getParsedValues(line: String): At = At(Utils.splitFields(line))
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4219 次 |
最近记录: |