[英]Static function in case class (Scala)
我在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;
}
...
}
然后從另一個Scala對象,我想將方法getParsedValues()
稱為靜態方法:
object Reader{
...
var atObject = At.getParsedValues(line)
...
}
但它得到一個錯誤value getParsedEvent is not a member of object At
我怎樣才能使它工作? 謝謝
在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;
}
...
}
然后像在Reader
對象中那樣調用它。
此外,您可能需要的構造函數變量可以更好地將Array[String]
編碼為同一個伴隨對象中的工廠方法。 然后,“靜態”方法的中間行將刪除new
關鍵字。 此外,您可以將賦值放到atObject
和return atObject
行 - 方法的最后一個表達式的結果將自動作為方法的返回值。 實際上,整個方法可以寫成:
def getParsedValues(line: String): At = At(Utils.splitFields(line))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.