Ich arbeite seit fast einem Jahr mit Scala, aber ab und zu stoße ich auf einen Code, den ich nicht wirklich verstehe. Diesmal ist es dieser. Ich habe versucht, Dokumente über "Scala-Methoden mit generischem Parametertyp" zu untersuchen, aber ich bin immer noch verwirrt.Scala-Methoden mit generischem Parameter-Typ
def defaultCall[T](featureName : String) (block : => Option[T])(implicit name: String, list:Seq[String]) : Option[T] =
{
val value = block match {
case Some(n) => n match {
case i : Integer => /*-------Call another method----*/
case s : String => /*--------Call another method----*/
}
case _ => None
}
Die Methode wird aufgerufen, unten mit dem Code:
var exValue = Some(10)
val intialization = defaultCall[Integer]("StringName"){exValue}
Was ich nicht verstehe, in der oben beschriebenen Code der „Fall“ Anweisung in der defaultCall Methode.
Ich sehe, dass, wenn der exValue einen Wert hat und nicht leer ist, der Code wie erwartet funktioniert. Aber wenn ich den exValue zu None ändere, dann geht mein Code in die Bedingung "case _ = None". Ich verstehe nicht, warum das passiert, da die Übereinstimmung, die hier gemacht wird, gegen die "Variable" ist, die entweder eine Ganzzahl oder ein String sein würde.
hilft Sie nicht bedeuten 'var exValue = Einige (10)'? –
Habe es gerade korrigiert. Danke für das Aufzeigen :) – Goldengirl
Sie passen zunächst gegen 'Block'. Wenn 'block'' None' ist, warum wird es dann nicht nach 'case _ = None' gehen? – Gal