2 Stimmen

Interpreter-Ergebnistyp nicht gefunden, obwohl er importiert wurde

Ich benutze Scala 2.9.1. Ich habe einen einfachen Scala-"Interpreter":

import scala.tools.nsc.interpreter.IMain
import scala.tools.nsc.interpreter.Results.Result
import scala.tools.nsc.interpreter.Results.Success

object App {

  def main(args: Array[String]) {
    val interpreter = new IMain
    val result:Result = interpreter.interpret(args(0))
    result.toString() match {
      case "Success" =>
        {
          var success = result.asInstanceOf[Success]
          println(success.productElement(0))
        };
      case _ => println("sehr schlechtes Ergebnis");
    }
  }

}

Wenn ich versuche, es zu kompilieren (maven), erhalte ich:

[ERROR] /home/koziolek/workspace/dsi/src/main/scala/pl/koziolekweb/scala/dsi/App.scala:15: error: not found: type Success
[INFO]           var success = result.asInstanceOf[Success]

Wie Sie sehen können, hat der Compiler gesagt, dass es keinen Typ Success gibt, obwohl ich ihn importiert habe.

7voto

0__ Punkte 65479

Erfolg ist ein Objekt, kein Klassen, Sie müssten es auf seinen Singleton-Typ casten result.asInstanceOf[Success.type]. Offensichtlich versuchen Sie, herumzukommen, da Sie nicht wissen, wie man das Pattern Match durchführt. Das würde es Ihnen ermöglichen, das richtige Ergebnis ohne das Casten zu erhalten:

import tools.nsc.interpreter.Results._

result match {
   case Erfolg     => "ja!"
   case Fehler      => "nein..."
   case Unvollständig  => "Sie haben etwas verpasst"
}

Wenn Sie den resultierenden Wert des interpretierten Ausdrucks im Erfolgsfall erhalten möchten, sehen Sie meine Antwort in diesem Beitrag für weitere Details.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X