Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- val config:Config = new MyConfig("c:/etc/myConfig.txt")
- println(config.param1)
- println(config.param2)
- println(config.param3)
- trait Config {
- lazy val param1:String = resolveParam1
- lazy val param2:String = resolveParam2
- lazy val param3:Int = resolveParam3
- protected def resolveParam1:String
- protected def resolveParam2:String
- protected def resolveParam3:Int
- }
- class MyConfig(fileName:String) extends Config {
- lazy val data:Map[String, Any] = readConfig
- // some dummy impl here, should read from a file
- protected def readConfig:Map[String,Any] = Map[String, Any]("p1" -> "abc", "p2" -> "defgh", "p3" -> 43)
- protected def resolveParam1:String = data.get("p1").get.asInstanceOf[String]
- protected def resolveParam2:String = data.get("p2").get.asInstanceOf[String]
- protected def resolveParam3:Int = data.get("p3").get.asInstanceOf[Int]
- }
- trait Config {
- val param1: String
- val param2: String
- val param3: Int
- }
- class MyConfig extends Config {
- lazy val param1 = readConfig().("p1")
- ...
- def readConfig(): Map[String, String] = ...
- }
- trait Config {
- def param1:String
- def param2:String
- def param3:Int
- }
- class MyConfig(fileName:String) extends Config {
- lazy val data:Map[String, Any] = readConfig
- // some dummy impl here, should read from a file
- protected def readConfig:Map[String,Any] =
- Map[String, Any]("p1" -> "abc", "p2" -> "defgh", "p3" -> 43)
- def param1:String = data.get("p1").get.asInstanceOf[String]
- def param2:String = data.get("p2").get.asInstanceOf[String]
- def param3:Int = data.get("p3").get.asInstanceOf[Int]
- }
- class MyConfig(fileName:String) extends Config {
- private class NonLazyConfig(val p1:String, p2:String, p3:int) extends Config {
- def param1 = p1
- def param2 = p2
- def param1 = p3
- }
- lazy val inner:Config = readConfig
- // some dummy impl here, should read from a file
- protected def readConfig:Config = {
- return new NonLazyConfig("abc", "defgh", 43)
- }
- def param1:String = inner.param1
- def param2:String = inner.param2
- def param3:Int = inner.param3
- }
Add Comment
Please, Sign In to add comment