Scala ArrayのString.splitに似たメソッドを探していましたが、見つかりませんでした。
私がやりたいことは、配列をセパレーターで分割することです。
たとえば、次の配列を分離します。
val array = Array('a', 'b', '\n', 'c', 'd', 'e', '\n', 'g', '\n')
'\n'
セパレーターを使用すると、次のようになります。
List(Array(a, b), Array(c, d, e), Array(g))
配列を文字列に変換し、そこに分割を適用できることを知っています。
array.mkString.split('\n').map(_.toArray)
しかし、私は変換をスキップしたいと思います。
私がこれまでに持っている解決策は、スパンを再帰的に使用することを含み、定型的すぎます:
def splitArray[T](array: Array[T], separator: T): List[Array[T]] = {
def spanRec(array: Array[T], aggResult: List[Array[T]]): List[Array[T]] = {
val (firstElement, restOfArray) = array.span(_ != separator)
if (firstElement.isEmpty) aggResult
else spanRec(restOfArray.dropWhile(_ == separator), firstElement :: aggResult)
}
spanRec(array, List()).reverse
}
Scala に欠けているものがあるはずです。何か案が?
ありがとう、ルーベン