列表过滤器中的布尔运算符

时间:2019-01-29 18:12:38

标签: scala compiler-errors

我试图通过两个条件来过滤文件列表。并且以下代码有效

pattern = left('/public/blabla', length(pattern))

但是,如果我试图将两个条件合并为一个过滤条件(如注释行所示),则会收到以下错误消息:

  

错误:(32,27)缺少参数类型         _.listFiles.filter((f => f.isFile)&&(f => f.getName.endsWith(“ shp”)))。toList.map(println)

它声称我错过了参数类型。我该如何纠正才能使代码正常工作?

1 个答案:

答案 0 :(得分:3)

您试图在两个函数上使用布尔&&运算符,但这根本行不通。您想要的是一个从FileBoolean的函数,您可以这样编写:

_.listFiles.filter(f => f.isFile && f.getName.endsWith("shp")).toList.map(println)

f.isFile是一个布尔值,而f.getName.endsWith(...)是一个布尔值,因此&&将按照您的期望进行操作。