私は多くの文字列を持つこのseq users
を持っています。私がしたいのは、単語の長さに基づいてseqをフィルタリングすることです。これは、filtered_users = users.filter(_.length == x) (x = wanted word length)
商品の長さに基づいた手品のフィルタリング
と言ってもいいですが、フィルタリングされたリストにchar longとchar short wordsが追加されています。私は2文字より長くは/短いので、私は何を探していますが、ユーザーを通過し、長すぎることすべてをフィルタリングする方法であるだけでなく、配列に追加しなければならない場合があります手動で
filtered_users2 = users.filter(_.length == x+1)
filtered_users3 = users.filter(_.length == x-1)
filtered_users ++= (filtered_users1 ++ filtered_users2)
を書き込むことによってそれを行っていますまたは短い名前。私は、ワード長x
とdifference
が予め与えられているループ
var filter = Seq[String]()
for (i <- max(0, x - difference) to (x + difference)) {
filter ++= users.filter(_.length == i)
}
に使用してこれを作成しました。しかし、seqが長い場合は、あまりにも多くの時間にわたってgeをしたくありません。私が探しているのは、ユーザseqを1回だけ通過し、フィルタリングされたリストを返す実装です。
もちろん、
val filtered_users = users.filter(_.length == x || _.length == x - 1 || _.length == x + 1)
は動作しませんでした。