1
我正在嘗試編寫一些字符串實用程序,以便能夠隱式轉換表單"myString".doSpecialConversion
並基於doSpecialConversion
工作的specialValue
。Scala隱式字符串轉換實用程序
嘗試-1:使用特點:
trait ConversionUtils {
// Need an overridable value
lazy val specialValue = ","
implicit class StringConversions(val s: String) {
def doSpecialConversion: Option[String] = if (s == specialValue) None else Some(s)
}
}
特質工作得很好,但問題是,它不是靜態的,所以多StringConversions
將創建這是不希望。所以我儘量延長AnyVal
不能爲特徵來完成,因爲Another limitation that is a result of supporting only one parameter to a class is that a value class must be top-level or a member of a statically accessible object.
嘗試-2:使用單例:
object ConversionUtils {
// Need an overridable value
lazy val specialValue = ","
implicit class StringConversions(val s: String) extends AnyVal {
def doSpecialConversion: Option[String] = if (s == specialValue) None else Some(s)
}
}
問題:如何提供一個實用程序是能夠重寫StringConversions的specialValue並且是真正靜態的?