根据项目长度过滤序列

时间:2016-10-28 12:16:11

标签: scala filtering sequence

我有这个seq UIApplicationDelegate,它有很多字符串。我想要做的是根据字长过滤seq。这可以通过说NSApplicationDelegate

来完成

但是,我想在过滤后的列表中添加一个char更长和char更短的单词。我是通过手动编写来完成的。

users

我可能需要更长/更短的2个字符添加到seq中,所以我正在寻找的是一种方法来浏览用户并过滤掉所有太长或太短的名称。我使用for循环

创建了这个
filtered_users = users.filter(_.length == x) (x = wanted word length)

预先给出字长filtered_users2 = users.filter(_.length == x+1) filtered_users3 = users.filter(_.length == x-1) filtered_users ++= (filtered_users1 ++ filtered_users2) var filter = Seq[String]() for (i <- max(0, x - difference) to (x + difference)) { filter ++= users.filter(_.length == i) } 。但是,如果seq很长,我不想太多次。我正在寻找的是一个只通过用户seq一次并返回过滤列表的实现。

显然,

x

没用。

1 个答案:

答案 0 :(得分:1)

如果在匿名函数中多次使用_,则将其视为多个输入参数(第一个_将是第一个参数,第二个参数将是第二个参数,依此类推)。如果您想多次使用一个参数,您必须将其命名为:

val x = 3
val difference = 1

users.filter(u => u.length >= x - difference && u.length <= x + difference)