scala样式检查器表示如果您使用严格的功能样式 - http://www.scalastyle.org/rules-dev.html#org_scalastyle_scalariform_WhileChecker,则不推荐使用 while循环。 我找到了1个解决方案 - Is there any advantage to avoiding while loops in Scala? 这表示可变性将确保从长远来看,您将使用while模式引入错误。怎么会发生这种情况? 如果不可变性受到严格限制,为什么没有检查 for loop ? 我有一个简单的用例,我必须从最后出现的字符串中删除所有出现的子字符串。我可以找到一个解决方案,因为我使用循环。 示例 - 字符串是“IABCFGHUABCABC”,子字符串是“ABC”。字符串输出应该是“IABCFGHU”,其中删除了所有尾随出现的子字符串。 是否有任何非强制性和推荐的方法来使用scala解决此问题?
答案 0 :(得分:4)
如果不可变性受到严格限制,为什么没有检查for循环?
因为与C风格的for
循环不同,Scala for
中没有可变性:
for (i <- <something>) {
<body>
}
是编写方法调用<something>.foreach { i => <body> }
的另一种方法。
是否有使用scala解决此问题的非强制性和推荐方法?
是的,当然。正如你所链接的问题所说,你可以使用尾递归。我不会提供代码,但想法是:如果字符串不以子字符串结尾,则返回它;如果是,删除该结尾并使用新参数再次调用该函数。您应该考虑为什么这最终会返回所需的结果。