我应该使用空列表还是使其成为选项?

时间:2015-03-25 17:11:40

标签: list scala optional-parameters

我的方法常常有一个List参数是可选的。当我收到一个项目列表时,我会对它们执行某些操作,否则将忽略该参数。这是一个微不足道的例子。

scala> def convertToUpper(s: String, appenders: List[String] = List()) {
  (s.toUpperCase :: appenders).mkString(" ")
}

scala> convertToUpper("cory", List("asks", "questions"))
CORY asks questions

但有时候我想知道这个合约是否会传达对appenders参数的期望,而实际上它是可选的。另一方面,使appenders成为Option[List]会增加复杂性。

当参数为Option时,避免使用List并且我只能测试空虚而不是None,这是不好的做法吗?

1 个答案:

答案 0 :(得分:8)

如果一个空列表是一个有效的参数(在你的例子中)并且它的行为与None一样,那么我建议不要将该列表包装在一个选项中。

我会说将它包装在一个选项中,表示NoneList()的处理方式不同。

我认为接受列表作为参数的方法很常见。