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

Cor*_*ein 4 scala list 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
Run Code Online (Sandbox Code Playgroud)

但有时候我想知道这个合同appenders是否在可选时传达参数的期望.在另一方面,使得appendersOption[List]增加了复杂性.

Option当参数是a时避免使用是不好的做法List而我只能测试空虚而不是None

aio*_*obe 8

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

我会说将它包装在一个选项中会发出信号None并且List()会被区别对待.

我认为接受列表作为参数表示为无操作的方法相当普遍.