在Scala中为共享变量使用枚举

时间:2018-09-27 15:28:12

标签: scala

使用枚举保存共享变量值是否正确?

我正在命令行中接受参数-例如“ mongoUsername”,“ mongoPassword”,“ mongoDatabase”等参数-在许多不同的文件中,并且希望消除在指定参数名称时出错的可能性

我创建了一个对象,如下所示:

object CommonParams extends Enumeration {
  val MONGO_USERNAME = "mongoUsername"
  val MONGO_PASSWORD = "mongoPassword"
  ..
}

从命令行接受这些参数时,将使用CommonParams.MONGO_USERNAME而不是“ mongoUsername”来读取参数。此方法有效。我的问题是:

  • 这是做我想做的正确方法吗?
  • 我认为我没有正确使用枚举。我应该改变什么?
  • 通过如下声明CommonParams我会得到什么:

object CommonParams extends Enumeration {
  val MONGO_USERNAME = Value("mongoUsername")
  val MONGO_PASSWORD = Value("mongoPassword")
  ..
}

如果以这种方式声明CommonParams,则每次都必须使用CommonParams.MONGO_USERNAME.toString,而不是仅使用更冗长的CommonParams.MONGO_USERNAME。

我知道枚举可以代表一定的值,即“事物”。但是,我在对象属性中持有一个值。如果我使用第二种声明CommonParams的方式,将会有什么好处?

1 个答案:

答案 0 :(得分:0)

在第一个版本中,您应该删除extends Enumeration,因为您实际上并没有使用它。

第二个版本的好处就是CommonParams.Value不是字符串,所以如果有接受CommonParams.Value的方法,您不能无意间传递无效的字符串。而且,您可以获得类似CommonParams.values的方法来列出所有值。