Ich möchte an diese Klassen statische Dienstprogramme anhängen, die ein Merkmal namens Application erweitern.scala: Importfunktionen innerhalb der impliziten Klasse definiert
trait Application {
def name: String
}
case class TestApp(name: String) extends Application
object ImplicitConf {
implicit class AppConfig[T <: Application](val app: T) {
lazy val conf = loadConfig
def loadConfig = {
ConfigFactory.load(app.name)
}
def getString(path: String): String = conf.getString(path)
}
}
nun folgende funktioniert:
import Application, TestApp
import ImplicitConf._
import AppUtil._
object TestAppConf extends App {
val app: Application = TestApp("TestAppConf")
val test = app.getString("hello")
println(s"The Config value is $test")
}
Aber ich bin zu gierig, wie verdeckte ich den Anruf
val test = app.getString("hello")
In
val test = getString("hello")
Sie können alles aus der App importieren. import app._ – Ivan
Entschuldigung, der Kommentar ist nicht relevant für implizit – Ivan