Я работаю с Scala почти год, но время от времени я сталкиваюсь с куском кода, который я действительно не понимаю. На этот раз это он. Я пробовал искать документы по «методам scala с общим типом параметров», но я все еще смущен.Методы Scala с общим параметром типа
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
}
Метод вызывается с помощью кода, показанного ниже:
var exValue = Some(10)
val intialization = defaultCall[Integer]("StringName"){exValue}
То, что я не понимаю, в описанном выше код является «случай» утверждение в методе defaultCall.
Я вижу, что когда exValue имеет значение и не пуст, код работает так, как ожидалось. Но в случае, если я изменил exValue на None, тогда мой код переходит в условие «case _ = None». Я не понимаю, почему это происходит, так как совпадение здесь происходит против «переменной», которая будет либо целым, либо строкой.
Не значит 'уаг exValue = Некоторые из них (10)'? –
Просто скорректировал это. Спасибо за то, что указали :) – Goldengirl
Вы сначала играете против 'block'. Если 'block' является' None', почему он не будет обращаться к 'case _ = None'? – Gal