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 コレクションには、実行できる膨大な数の操作があります。悪い習慣をやめようとする命令型プログラマーとして私が最も役立つと思うものはmapreduce、 、およびfold. それらを使用するためのヒントについては、私のブログ記事Map, reduce, and fold for programmatically imperative をチェックしてください。

于 2013-10-03T14:32:27.083 に答える