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并且是真正静态的?