2011-11-03 32 views
2

如何正确地调用existsjava.util.Enumeration?我无法更改来源,它来自HttpServletRequest的java.util.Enumeration斯卡拉

这(无关)代码的工作:

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 [字符串])[字符串]存在(_包含 “T”)

回答

1

看起来像做了HttpServletRequest.getHeaderNames唯一的办法就是好老循环:

val headers = req.getHeaderNames 
while (headers.hasMoreElements) { 
if (headers.nextElement.asInstanceOf[String] contains "T") 
    return FOO 
} 
5

尝试

import collection.JavaConversions.enumerationAsScalaIterator 

req.getHeaderNames() exists (_ contains "T") 
+0

它产生“无法解析符号包含”在IDE中。 – wiradikusuma

1

它应该是enumerationAsScalaIterator[String](req.getHeaderNames[String]) exists (_ contains "T")(或使用它隐含,as Pablo Fernandez suggests)。不知道为什么它不会显示。然而在编辑器中的错误。

1

你的第二个[字符串]这里: req.getHeaderNames [字符串])[字符串] 是不是必要的,是无效的斯卡拉。 尝试

enumerationAsScalaIterator(req.getHeaderNames[String]) exists (_ contains "T") 

更重要的是,enumerationAsScalaIterator可隐,所以你应该能够只是做:

req.getHeaderNames exists (_ contains "T") 
+0

同上面,它会产生“无法解析符号包含”在IDE中。 – wiradikusuma