私はScalaでいくつかのWebスクレイピングを試みており、現在はJSoupを使用しています。今度はイテレータがScalaで動作していないことがわかりましたので、私はちょっとしたことをして、イテレータを自分で書きました。それは次のようになります。pimpingの後でScalaが型を認識しないJSoup
object Pimp {
implicit class PimpElements(es: Elements) extends Iterable[Element] {
def iterator = new Iterator[Element] {
var currentElem = 0
def hasNext = currentElem < size
def next(): Element = {
currentElem += 1
es.get(currentElem - 1)
}
}
}
}
さて、IntelliJのか、Scalaは認識されないため、動作しないコード私のタイプElement
であることがcider
変数私が推測:
for (cider <- ciders; if cider.getElementsByClass("info").text() != "") {
ciderArray += Drink(DrinkType.CIDER, cider)
}
しかし、なぜありませんか?私next()
方法はおそらくElement
でなければなりませんes.get(i)
を返し、以下のコードで動作します
for (i <- 0 to ciders.size() - 1; if ciders.get(i).getElementsByClass("info").text() != "") {
ciderArray += Drink(DrinkType.CIDER, ciders.get(i))
}
は、基本的にはイテレータとして同じことをやって、このコードではありませんが、何らかの理由で認められますか? cider
のタイプは、intelliJによると、Any
であり、ではありません。
sbtを使用してコンパイルしますか? IntelliJは、タイプを特定できないときにエラーを誤ってマークすることがあります。 – Ren
まだ正常にコンパイルされませんか? Scala、Java、JSoupのどのバージョン?とアイデア?私は今IDEを試すことはできません。 –