我的项目中有一个特性,我将其用作配置文件,类似于:
B
此特征与ohai
}一起用于我的所有对象(主要对象除外)。我想要做的是根据用户在trait config {
val people = Seq("John","Jessie")
}
函数中收到的extends
为people
分配不同的值,所以我会有类似的内容:
args
有办法吗?
答案 0 :(得分:2)
你问的是可能的:
trait config {
app: App =>
lazy val people = args.head match {
case "A" => Seq("John","Jessie")
case "B" => Seq("Bill","James","Brad")
case _ => Seq("Jimmy")
}
}
object Main extends App with config {
people.mkString
}
或者您可以减少特性,使其适用于除App之外的其他类型。
trait config {
protected def args: Array[String]
lazy val people = args.head match {
case "A" => Seq("John","Jessie")
case "B" => Seq("Bill","James","Brad")
case _ => Seq("Jimmy")
}
}
然而,正如已经指出的那样,这不是一个好的模式。
如果您想提供系统范围的配置,可能需要查看Typesafe Config