java.util. Перечисление в Scala - PullRequest
2 голосов
/ 03 ноября 2011

Как мне правильно назвать 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.Приведенный выше код не отображает никаких ошибок в редакторе, но выдает ошибку при компиляции:

error: ';'ожидается, но '[' найдено.enumerationAsScalaIterator (req.getHeaderNames [String]) [String] существует (_ содержит "T")

Ответы [ 4 ]

5 голосов
/ 03 ноября 2011

Попробуйте

import collection.JavaConversions.enumerationAsScalaIterator

req.getHeaderNames() exists (_ contains "T")
1 голос
/ 04 ноября 2011

Похоже, что единственный способ сделать это для HttpServletRequest.getHeaderNames - это старый добрый цикл:

val headers = req.getHeaderNames
while (headers.hasMoreElements) {
if (headers.nextElement.asInstanceOf[String] contains "T")
  return FOO
}
1 голос
/ 03 ноября 2011

Ваш второй [String] здесь: req.getHeaderNames [String]) [String] Не нужен и не действителен Scala. Попробуйте

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

Еще лучше, enumerationAsScalaIterator доступен неявно, поэтому вы можете просто сделать:

req.getHeaderNames exists (_ contains "T")
1 голос
/ 03 ноября 2011

Это должно быть enumerationAsScalaIterator[String](req.getHeaderNames[String]) exists (_ contains "T") (или использовать его неявно, , как предлагает Пабло Фернандес ). Однако не знаю, почему в редакторе не будет отображаться ошибка.

...