Мне не совсем ясно, что именно вы пытаетесь сделать. Вы просто хотите проверить, присутствует ли определенный элемент в списке? Или вы хотите вернуть список строк с некоторым преобразованием? Последнее, например, можно записать так:
scala> def processList(l: List[String]): List[String] = l map {s => s match {
case "test" => "we got test"
case "test1" => "we got test1"
case _ => "we got something else"
}
}
scala> processList(List("test", "test1", "test2", "test3"))
res: List[String] = List(we got test, we got test1, we got something else, we got something else)
А для первого вы могли бы написать что-то вроде:
scala> def exists(l: List[String], m: String): String = {
if (l exists (s => s == m))
m + " exists"
else
m + " does not exist"
}
exists: (l: List[String],m: String)String
scala> val l = List("test1", "test2", "test3")
l: List[java.lang.String] = List(test1, test2, test3)
scala> exists(l, "test1")
res0: String = test1 exists
scala> exists(l, "test2")
res1: String = test2 exists
scala> exists(l, "test8")
res2: String = test8 does not exist
В любом случае: метод foreach в List перебирает каждый элемент списка, применяя данную функцию к каждому элементу. Он в основном используется для побочных эффектов, таких как печать чего-либо на консоль или запись в файл. Функция, переданная методу foreach, должна возвращать тип Unit, который похож на void в Java. Поэтому вы не можете вернуть ни одной строки из него.