Последний случай является частично примененной функцией. Я чувствую, что я сейчас слишком широк, поэтому я остановлюсь здесь. Я надеюсь, что это помогло.

кто-нибудь дать однозначный ответ о том, как по названию параметров=> T а такжеFunction0 параметры() => T превращаются друг в друга компилятором Scala? Я знаю, что они не одинаковы, но разница очень тонкая, поскольку они могут взаимозаменяемо использоваться во многих сценариях.

Пример: если я определю

def someFunction: Int = 2
def f(x: => Int): Unit = println(x)

тогда я могу успешно позвонить

f(2)
f(someFunction)

Как() => Int приемлемая замена для=> Int?

В более общем смысле это() => T универсально приемлемая замена имени=> T параметр?

Также, пожалуйста, поправьте меня, если я ошибаюсь по следующим причинам:=> T никогда не является приемлемой заменой() => T потому что первый тип значения (T), другой тип функции. Это если у меня естьdef f(x: () => Int)Я никогда не смогу передатьIntили ленивыйInt (в любом случае даже не имеет смысла, так как нет ленивых типов).

Ответы на вопрос(1)

Ваш ответ на вопрос