Я пытаюсь представить функцию, которая не принимает никаких аргументов и не возвращает значения (я имитирую функцию setTimeout в JavaScript, если вы знаете.)
case class Scheduled(time : Int, callback : => Unit)
не компилируется, говоря, что "параметры" val "могут быть не позывным"
case class Scheduled(time : Int, callback : () => Unit)
компилируется, но его нужно вызвать странно, вместо
Scheduled(40, { println("x") } )
Я должен это сделать
Scheduled(40, { () => println("x") } )
Что также работает
class Scheduled(time : Int, callback : Unit => Unit)
но вызывается менее разумным способом
Scheduled(40, { x : Unit => println("x") } )
(Что бы могла быть переменная типа Unit?) Я хочу, конечно, конструктор, который может быть вызван тем, как я его вызову, если бы это была обычная функция:
Scheduled(40, println("x") )
Дайте ребенку свою бутылку!