2017-01-23 4 views
0

Ich lerne Scala, und ich habe versucht, von 2 Scripts in verschiedenen Klassen zu importieren, aber ich bekomme einen Fehler, und ich weiß nicht warum.Scala Error Import

Diese Klasse in Summer.scala, wo ich versuche, das Singleton-Objekt aus der Klasse ChecksumAccumulator zu importieren.

import ChecksumAccumulator.calculate 

object Summer{ 
    def main(args: Array[String]): Unit= { 
    for (arg <- args) 
     println(arg + " : " + calculate(arg)) 
    } 
} 

Klasse ChecksumAccumulator, mit dem Singleton-Objekt ChecksumAccumulator.

object ChecksumAccumulator { 

/* 
When a singleton object shares the same name 
with a class, it is called that class's companion object. 
*/ 

    private val cache = mutable.Map.empty[String, Int] 

    def calculate(s: String): Int = 
    if (cache.contains(s)) 
     cache(s) 
    else { 
     val acc = new ChecksumAccumulator 

     //The object with the same name of the class can acces to the private members. 
     //println(acc.sum) 
     for (c <- s) 
     acc.add(c.toByte) 
     val cs = acc.checksum() 
     cache += (s -> cs) 
     cs 
    } 
    def showMap() : Unit = { 
     for(base:String <- cache.keys) 
     println(cache(base)) 
    } 
//def showMap(): String = { var cadena = cache("Every value is an object.") + " "+ cache("Every value is an object. per second time!!"); cadena } 
} 

Dieses Skript diesen Fehler werfen

scala Summer.scala

Summer.scala:8: error: not found: object ChecksumAccumulator import ChecksumAccumulator.calculate^Summer.scala:14: error: not found: value calculate println(arg + " : " + calculate(arg))^two errors found

+0

Siehe http://stackoverflow.com/questions/1529434/how-to-split -a-scala-script-in-mehrere-Dateien. –

Antwort

0

Es scheint, wie es ein duplicated question ist, aber ich kann noch nicht Fragen markieren, wie auf sie dupliziert noch kommentieren.

Wenn das alles ist der Code, es bedeutet, dass Sie fehlen:

class ChecksumAccumulator { ... } 

Weil Sie versuchen, eine Instanz dieser Klasse zu erstellen:

val acc = new ChecksumAccumulator 

Und es ist unmöglich, erreichen mit nur:

object ChecksumAccumulator { ... } 

Überprüfen Sie diese Antwort über genau den gleichen Code Beispiel. Es ist die fehlende Definition von class ChecksumAccumulator:

https://stackoverflow.com/a/8681616/5100014

So stellen Sie sicher, dass es in die gleiche Datei einfügen mit object ChecksumAccumulator

+0

Ok, first, meine Frage unterscheidet sich von der anderen Frage, zweitens habe ich keine Probleme mit der Klassenklasse ChecksumAccumulator {...}, sie läuft perfekt, das Objekt hat den gleichen Namen der Klasse, und es ist zulässig in scala zu tun, Mein Problem ist, wenn ich 1 Scala-Skript zu einem anderen Scala Scrip importieren möchte. Das ChecksumAccumulator Script läuft auf eine gute Art und Weise. – Jquiro12

+0

Wie läuft das? Von IDE oder von REPL? Wie definieren Sie das ChecksumAccumulator-Objekt und die Klasse? In einer Datei oder in REPL? – zhelezoglo

+0

Es läuft von REPL, und ich definiere ChecksumAccumulator Objekt und Klasse in einer Datei – Jquiro12

Verwandte Themen