Как отфильтровать элементы из кортежа, используя список в качестве фильтра - PullRequest
0 голосов
/ 15 апреля 2019

Был фильтр, который анализировал список, но потом понял, что мне нужно сжать исходный список для нумерации каждой строки, прежде чем я отфильтровал, и теперь я не уверен, как использовать один и тот же фильтр для каждого из элементов кортежа _._ 2

val list = List("def", "var", "val")
val source = Source.fromFile("..\scala.file").getLines.toList
val filtered = source filter(line => list.exists(word => list.contains(word)))) 
//before
val filtered = (1 to source.length) zip source 
                   filter(line => list.exists(word => list.contains(word)))) 
//after

Невозможно получить функцию, работающую с кортежем.

Предполагается отфильтровывать каждый кортеж, который не содержит экземпляров элементов из списка

1 Ответ

1 голос
/ 15 апреля 2019
val list = List("def", "var", "val")
val matcher = list.mkString(".*(", "|", ").*")

io.Source
  .fromFile("..\scala.file")
  .getLines
  .zipWithIndex
  .filter(_._1 matches matcher)
  .map{case (txt,idx) => (idx+1,txt)}  //optional
  .toList
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...