我正在通过阅读书籍并在Scala中实施一些标准算法来练习Scala。
我正在尝试首先使用强力方法找到子串或完成精确的模式匹配程序。我知道我可以使用String.substring或遍历每个字符串中的字符(charAt)。但我正在寻找任何功能方式来查找子串(不使用内置子串)。要清楚,通过功能我的意思是使用不可变量并避免手动迭代等。
答案 0 :(得分: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, .)
Array
是可变的(请参阅Array Scaladoc),但List
是不可变的(请参阅List Scaladoc)。现在你可以开始做功能了。 :)
Scala集合可以执行大量操作。我认为最有用的一些尝试忘掉坏习惯的命令式程序员是map
,reduce
和fold
。有关使用它们的一些提示,请查看我的博文Map, reduce, and fold for the programmatically imperative