java.util. Перечисление в Scala
Как мне правильно позвонить 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")
4 ответа
Похоже, единственный способ сделать это для HttpServletRequest.getHeaderNames
старый добрый цикл:
val headers = req.getHeaderNames
while (headers.hasMoreElements) {
if (headers.nextElement.asInstanceOf[String] contains "T")
return FOO
}
Пытаться
import collection.JavaConversions.enumerationAsScalaIterator
req.getHeaderNames() exists (_ contains "T")
Ваш второй [String] здесь: req.getHeaderNames[String])[String] Не требуется и не является действительным Scala. Пытаться
enumerationAsScalaIterator(req.getHeaderNames[String]) exists (_ contains "T")
А еще лучше, enumerationAsScalaIterator доступен неявно, поэтому вы должны просто сделать:
req.getHeaderNames exists (_ contains "T")
Так должно быть enumerationAsScalaIterator[String](req.getHeaderNames[String]) exists (_ contains "T")
(или использовать его неявно, как предполагает Пабло Фернандес). Однако не знаю, почему в редакторе не будет ошибки.