2

我通过阅读书籍并在 Scala 中实现一些标准算法进行练习来学习 Scala。

我正在尝试首先使用蛮力方法找到一个子字符串或执行精确的模式匹配程序。我知道我可以只使用 String.substring 或遍历每个字符串 (charAt) 中的字符。但我正在寻找任何功能性方法来查找子字符串(不使用内置子字符串)。需要明确的是,功能是指使用不可变对象并避免手动迭代等。

4

1 回答 1

3

您提出了一个非常广泛的问题,因此我将提供一些提示来帮助您开始锻炼。有很多方法可以解决这个问题,我相信更有经验的函数式程序员可能会提供更多帮助。:)

首先获取您的字符串,获取字符,然后将其转换为列表。取自 Scala 控制台:

scala> val str = "This string is just an example."
str: String = This string is just an example.

scala> val list = str.toCharArray.toList
res15: List[Char] = List(T, h, i, s,  , s, t, r, i, n, g,  , i, s,  , j, u, s, t,  , a, n,  , e, x, a, m, p, l, e, .)

AnArray是可变的(参见Array Scaladoc),但 aList是不可变的(参见List Scaladoc)。现在你可以开始在它上面做一些功能性的东西了。:)

Scala 集合有大量可以执行的操作。作为一个试图改掉坏习惯的命令式程序员,我发现最有用的一些是map,reducefold. 有关使用它们的一些技巧,请查看我的博客文章Map, reduce, and fold 以了解编程命令

于 2013-10-03T14:32:27.083 回答