簡體   English   中英

如何在Scala中定義“全局隱式類”?

[英]How could a “global implicit class” be defined in Scala?

考慮到隱式類“必須在另一個特征/類/對象內部定義” 1 ,如何在全局定義隱式轉換?

這種情況是我想在我的應用程序中為所有Strings (或Lists )添加一個方法,或者至少為它的幾個包添加一個方法。

無論是在Java中還是在Scala中,都無法向“全局”范圍添加任何內容。 但是,在Scala中,可以定義package objects ,它可以包含在整個包中使用的方法,並且可以由用戶輕松導入。

這看起來像這樣:在目錄foo/bar/baz創建一個名為package.scala的文件,其中包含以下內容:

package foo.bar

package object baz {
  implicit def incrediblyUsefulConversion(s: String) = ...
}

然后,用戶可以在其代碼中執行以下操作以激活轉換:

import foo.bar.baz._

或者可能

import foo.bar.baz.incrediblyUsefulConversion

當然,您也可以在其他軟件包中使用自己的代碼,就像任何其他用戶一樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM