为什么不推荐在 Scala 中使用 while 循环

RIY*_*HAL 3 functional-programming scala while-loop

scala 样式检查器表示,如果您使用严格的函数样式,则不推荐使用 while 循环- http://www.scalastyle.org/rules-dev.html#org_scalastyle_scalariform_WhileChecker。我找到了 1 个解决方案 -在 Scala 中避免 while 循环有什么好处吗? 这表示可变性将确保从长远来看,您将引入带有 while 模式的错误。这怎么会发生?为什么不检查for 循环如果不变性受到高度限制?我有一个简单的用例,我必须从末尾出现的字符串中删除所有出现的子字符串。我可以找到解决方案,因为我使用了循环。示例 - 字符串是“IABCFGHUABCABC”,子字符串是“ABC”。字符串输出应为“IABCFGHU”,其中删除所有尾随出现的子字符串。是否有任何非强制性和推荐的方法来使用 Scala 解决这个问题?

Ale*_*nov 5

如果不可变性受到高度限制,为什么不检查 for 循环?

因为与 C 风格的for循环不同,Scala 没有可变性for

for (i <- <something>) {
  <body>
}
Run Code Online (Sandbox Code Playgroud)

只是编写方法调用的另一种方式<something>.foreach { i => <body> }

是否有任何非强制性和推荐的方法来使用 Scala 解决这个问题?

是的当然。正如您链接的问题所说,您可以使用尾递归。我不会提供代码,但想法是:如果字符串不以子字符串结尾,则返回它;如果是,请删除该结尾并使用新参数再次调用该函数。您应该考虑为什么这最终会返回所需的结果。