2014-12-23 36 views
1

我試圖把一些隱性轉換器在一個包,這樣,當我:如何將隱式對象放入包中?

import packagename._ 

它進口隱含對象爲好。

目前,我只是用,而不是包的對象:

object Quote { 
    case class Quote(symbol: String, price: Int, time: Date) 
    implicit val format = Json.format [Quote] 
} 

但是,這只是感覺不對例如我無法在多個文件上分割對象定義。

我想這樣做:

package Quote 

case class Quote(symbol: String, price: Int, time: Date) 
implicit val format = Json.format [Quote] // this isn't allowed 

但是,這是不允許的。

在Scala 的包中定義隱式對象的標準方式是什麼,這樣當包以「._」導入時,調用代碼也會導入implicits?

回答

4

使用包裝對象:

package object packagename { 
    case class Quote(symbol: String, price: Int, time: Date) 
    implicit val format = Json.format [Quote] 
} 
+0

你應該在哪裏放置進口?在包對象內部還是在「包xxx」行之後的頂部? –

+0

在斯卡拉一般你可以把進口(幾乎)任何你想要的。它們適用於您放置它們的區塊。但如果你沒有理由縮小範圍,就把它們放在最頂端。 –