我有以下两个 Scala 文件:
object ImplicitsHome {
implicit class StringWrapper(val str: String) extends ImplicitsHome with Serializable
}
trait ImplicitsHome {
def str: String
def embelishString: String = {
str.concat("fancy")
}
}
和:
import ImplicitsHome._
class User {
def buildSuperString(str: String): String = {
str.embelishString
}
}
object User {
def main(args: Array[String]): Unit = {
val usr = new User()
val fancy = usr.buildSuperString("hi")
println(fancy)
}
}
我想知道的是,如果我必须多次调用该embelishString
函数,我会创建隐式StringWrapper
类的多个实例吗?
我担心这一点,因为当使用隐式时,它会传入一个字符串(str
)——它是我必须小心在embelishString
函数的不同调用之间共享的“状态”吗?