В Scala одна из многих вещей, которые используются для подчеркивания, состоит в том, чтобы разрешить пользователям устанавливать начальное значение по умолчанию в определениях var
(см. Раздел 4.2 спецификации ):
scala> var x: String = _
x: String = null
scala> var y: Int = _
y: Int = 0
Похоже, проблема, с которой вы сталкиваетесь, заключается в том, что знак подчеркивания, следующий сразу за =
в определении var
, интерпретируется как это специальное начальное значение по умолчанию, а альтернативное использование в качестве заполнителя в функции не рассматривается.
Такое поведение кажется мне ошибкой.Я почти уверен, что это не может быть оправдано спецификацией, и вполне разумно ожидать, что компилятор рассмотрит оба синтаксических использования _
.На первый взгляд, я не могу поднять проблему, хотя.Если вам не безразлично, вы можете попытаться сообщить об этом сами.
Поскольку вы на самом деле не задаете вопрос, я просто предполагаю, какая информация будет вам полезна.Вы, вероятно, не спрашиваете об обходных путях, так как у вас есть один прямо во второй строке, так что, вероятно, вы просто задаетесь вопросом, что с этим происходит, и в этом случае ответ заключается в том, что компилятор Scala все ещев некоторой степени глючит путаница, особенно в менее используемых или ухоженных областях языка (например, var
определения).