如何为exists
正确致电java.util.Enumeration
?我无法更改来源,它来自HttpServletRequest
。
这个(不相关的)代码有效:
val a = List("One", "Two", "Three")
a exists (_ contains "T")
但是为什么这段代码无法编译:
import collection.JavaConversions.enumerationAsScalaIterator
enumerationAsScalaIterator(req.getHeaderNames[String])[String] exists (_ contains "T")
我正在使用IntelliJ作为我的IDE。上面的代码在编辑器中没有显示任何错误,但在编译时会抛出错误:
错误:';'预期,但'''发现。 enumerationAsScalaIterator(req.getHeaderNames [String])[String]存在(_包含“T”)
答案 0 :(得分:5)
尝试
import collection.JavaConversions.enumerationAsScalaIterator
req.getHeaderNames() exists (_ contains "T")
答案 1 :(得分:1)
应为enumerationAsScalaIterator[String](req.getHeaderNames[String]) exists (_ contains "T")
(或隐式使用as Pablo Fernandez suggests)。不知道为什么它不会在编辑器中显示错误。
答案 2 :(得分:1)
你的第二个[String]在这里: req.getHeaderNames [字符串])[字符串] 不需要,并且Scala无效。 试试
enumerationAsScalaIterator(req.getHeaderNames[String]) exists (_ contains "T")
更好的是,enumerationAsScalaIterator是隐式可用的,所以你应该能够做到:
req.getHeaderNames exists (_ contains "T")
答案 3 :(得分:1)
看起来为HttpServletRequest.getHeaderNames
执行此操作的唯一方法是旧的循环:
val headers = req.getHeaderNames
while (headers.hasMoreElements) {
if (headers.nextElement.asInstanceOf[String] contains "T")
return FOO
}