我试图通过两个条件来过滤文件列表。并且以下代码有效
pattern = left('/public/blabla', length(pattern))
但是,如果我试图将两个条件合并为一个过滤条件(如注释行所示),则会收到以下错误消息:
错误:(32,27)缺少参数类型 _.listFiles.filter((f => f.isFile)&&(f => f.getName.endsWith(“ shp”)))。toList.map(println)
它声称我错过了参数类型。我该如何纠正才能使代码正常工作?
答案 0 :(得分:3)
您试图在两个函数上使用布尔&&
运算符,但这根本行不通。您想要的是一个从File
到Boolean
的函数,您可以这样编写:
_.listFiles.filter(f => f.isFile && f.getName.endsWith("shp")).toList.map(println)
f.isFile
是一个布尔值,而f.getName.endsWith(...)
是一个布尔值,因此&&
将按照您的期望进行操作。