我的方法常常有一个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
,这是不好的做法吗?
答案 0 :(得分:8)
如果一个空列表是一个有效的参数(在你的例子中)并且它的行为与None
一样,那么我建议不要将该列表包装在一个选项中。
我会说将它包装在一个选项中,表示None
和List()
的处理方式不同。
我认为接受列表作为参数的方法很常见。