有人告诉我要避免return
在Scala中使用它,尽管我不确定为什么。
我有以下代码,除非我return
在其中输入关键字,否则它似乎不会返回正确的内容。为什么需要放return
?
def nextParen(chars: List[Char]): List[Char] =
for(i <- 0 to chars.size - 1) {
if(chars(i) == '(' || chars(i) == ')') {
return chars.slice(i, chars.size) // return HERE!
}
}
List.empty
}
避免使用的理由return
是,它导致代码的可读性较差,并且不是重构安全的。这不是绝对的规则,如果您找到一种最佳方式表达的算法,但是通常可以通过将其编写为表达式来使代码更清晰。
此特定代码看起来等效于:
def nextParen(chars: List[Char]) =
chars.dropWhile{c => c != '(' && c != ')'}
通常,尝试着重于编写表达式而不是过程。与其告诉编译器应该采取什么步骤,不如告诉其值是什么。即使您不知道dropWhile
,您也可以将循环写为折叠(例如foldLeft
),该折叠表示在列表的每个元素上要做什么,然后列表最后为空的情况自然会掉出来,而不是而不是需要两个不同的分支来匹配和不匹配。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句