我应该使用空列表还是将其设为选项?
Should I use an empty List or make it an Option?
我的方法通常有一个可选的 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]
会增加复杂性。
当参数是 List
时避免使用 Option
是不是不好的做法,我可以只测试空而不是 None
?
如果一个空列表是一个有效的参数(它在你的示例中)并且它的行为与 None
一样,那么我建议不要将列表包装在一个选项中。
我会说将其包装在一个选项中表示 None
和 List()
将受到不同的对待。
我认为接受列表作为参数的方法表现得像空操作是相当普遍的。
我的方法通常有一个可选的 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]
会增加复杂性。
当参数是 List
时避免使用 Option
是不是不好的做法,我可以只测试空而不是 None
?
如果一个空列表是一个有效的参数(它在你的示例中)并且它的行为与 None
一样,那么我建议不要将列表包装在一个选项中。
我会说将其包装在一个选项中表示 None
和 List()
将受到不同的对待。
我认为接受列表作为参数的方法表现得像空操作是相当普遍的。