class 情况下的静态函数 (Scala)
Static function in case class (Scala)
我在 Scala 应用程序中有一个案例 class,我更喜欢在该 class 中编写一个静态函数,因为它最有意义。
这是 class:
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;
}
...
}
然后从另一个 Scala 对象,我想调用方法 getParsedValues()
作为静态方法:
object Reader{
...
var atObject = At.getParsedValues(line)
...
}
但是出现错误value getParsedEvent is not a member of object At
我怎样才能让它发挥作用?谢谢
在 Scala 中编写等效于 Java 静态方法的标准方法是将方法添加到 class 的伴生对象中。所以:
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;
}
...
}
然后像您在 Reader
对象中所做的那样调用它。
此外,您可能需要的构造函数变体采用 Array[String]
可能更好地编码为同一个伴随对象中的工厂方法。然后 "static" 方法的中间行将删除 new
关键字。此外,您可以将赋值放到 atObject
和 return atObject
行 - 方法的最后一个表达式的结果将自动作为该方法的 return 值。事实上,整个方法可以写成:
def getParsedValues(line: String): At = At(Utils.splitFields(line))
我在 Scala 应用程序中有一个案例 class,我更喜欢在该 class 中编写一个静态函数,因为它最有意义。 这是 class:
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;
}
...
}
然后从另一个 Scala 对象,我想调用方法 getParsedValues()
作为静态方法:
object Reader{
...
var atObject = At.getParsedValues(line)
...
}
但是出现错误value getParsedEvent is not a member of object At
我怎样才能让它发挥作用?谢谢
在 Scala 中编写等效于 Java 静态方法的标准方法是将方法添加到 class 的伴生对象中。所以:
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;
}
...
}
然后像您在 Reader
对象中所做的那样调用它。
此外,您可能需要的构造函数变体采用 Array[String]
可能更好地编码为同一个伴随对象中的工厂方法。然后 "static" 方法的中间行将删除 new
关键字。此外,您可以将赋值放到 atObject
和 return atObject
行 - 方法的最后一个表达式的结果将自动作为该方法的 return 值。事实上,整个方法可以写成:
def getParsedValues(line: String): At = At(Utils.splitFields(line))