我正在尝试获取现有列表,在每个元素上运行一个函数,如果该函数返回false,则从列表中过滤掉它。
我不太明白函数式编程,因为我尝试了以下内容:
for (elem <- myList) {
if(is_legal(elem) == false) {
myList.filter(_ != elem)
}
}
任何帮助都将不胜感激。
答案 0 :(得分:4)
您使用filter
时有正确的想法;你所要做的就是传递is_legal
谓词:
val filteredList = myList.filter(is_legal)
答案 1 :(得分:0)
为了更好地理解您,上面的答案可以表示为
val filteredList = myList.filter(is_legal(_))
或者
val filteredList = myList.filter(x => is_legal(x))