В общем, я хочу понять, как Scala вводит параметр для функции, которая принимает параметр типа Unit, когда ()
опущен для его вызова.Функция, которая принимает параметр типа устройства
В this question приведен пример:
val fun1: Unit => Int = u => 5
И он может быть вызван следующим образом:
fun1()
Как это компилировать? Является ли ()
как параметр вместо вызова функции, т. Е. Как внутренние скобки, как в fun1(())
?
@ThaDon задал тот же вопрос, без ответа.
Более того, я обнаружил, что это не будет работать:
scala> def unit =()
scala> fun1 unit
<console>:12: error: value unit is not a member of Unit => Int
fun1 unit
^
Но это:
scala> fun1()
warning: there was one deprecation warning; re-run with -deprecation for details
res5: Int = 5
и этот
scala> fun1(unit)
res3: Int = 5
обе работы.
Что мне недостает fun1 unit
? Как компилятор разбирает этот код?
Спасибо! Я не знал об устаревании вставки '()' для параметров в 2.11.x, но я думаю, что это хорошее изменение! –