Weird Type Mismatch in Scala

Ich hoffe, diese Frage wurde noch nirgendwo anders beantwortet. Ich habe hier keine Antwort gefunden.

n meinem Lokalisierungssystem habe ich eine Klasse namens Language

class Language(val name:String, dict:HashMap[String, String]) {
  def apply(key: String):String = (dict get key) match {
    case None    => "°unknown°"
    case Some(s) => s
  } 

  //DO SOME OTHER THINGS
}

und ein Objekt namens LanguageCentral

object LanguageCentral {
  private var lang:Option[Language] = None
  //SOME OTHER PRIVATE MEMBERS

  def language = lang

  def language_=(l:Option[Language]) = l match {
    case None    => {}
    case Some(l) => setLanguage(l)
  }

  def setLanguage(l:Language) {
    lang = Some(l)
    //DO SOME OTHER THINGS
  }

  //DO LOTS OF OTHER THINGS
}

Ich habe noch keinen Code geschrieben, der dieses Framework verwendet, aber als ich ihn in einer interaktiven Sitzung ausprobierte, wurde ein Tippfehler entdeckt, den ich nicht wirklich verstehe:

scala> val l = new LanguageCreator("Languages.csv").getLanguage("English")
l: Option[Language] = Some(Language@7aeb46d)

scala> LanguageCentral.language=l                                         
<console>:23: error: type mismatch;
 found   : Option[Language]
 required: Option[Language]
       LanguageCentral.language=l
                                ^

scala> LanguageCentral setLanguage (l getOrElse null)                     
<console>:24: error: type mismatch;
 found   : Language
 required: Language
       LanguageCentral setLanguage (l getOrElse null)
                                      ^

Ich habe wirklich keine Ahnung, was los ist. Aber aus meiner Erfahrung mit Haskell schätze ich, dass die Lösung nur eine kleine Änderung entfernt ist.;)
Könnte mir jemand helfen? Danke

P.S .: Verwenden von Scala 2.8.0.final

Antworten auf die Frage(2)

Ihre Antwort auf die Frage