Scala использовал вывод типа , чтобы определить тип переменной startDateTime
, для которой вы не указали тип. Итак, Scala выдает следующую ошибку:
error: type mismatch;
found : Date
required: Null
startDateTime = date; // error
Это говорит о том, что startDateTime
должно иметь тип Null, но вы даете ему Date
.
Исправление заключается в явном наборе startDateTime
следующим образом:
var startDateTime : Date = /* some sort of default date */
Если ваш startDateTime
действительно необязательный, рассмотрите возможность использования опции Scala вместо null
. Это сделало бы вашу функцию похожей на это:
def getVWAP(date: Date, maxEvents: Int): Double = {
var startDateTime: Option[Date] = None;
if (maxEvents > 0) {
startDateTime = Some(date);
}
0.0
}
Подробнее о философии Option
и null
можно прочитать здесь . Подводя итог, можно сказать, что null
относится к проверке во время выполнения, что приводит к NullPointerException
, если какая-то переменная имеет значение null, а Option
к проверке во время компиляции, что приводит к ошибке компилятора, указывающей на то, что потенциальное ненулевое значение должно быть обработано , Использование Option
говорит, что вы предпочли бы знать во время компиляции.