如何为无参数函数定义scala类型?

yur*_*ura 7 scala syntax-error scala-2.8

这有效

def func(f: => Int) = f
Run Code Online (Sandbox Code Playgroud)

这不应该(例如在课堂内)

type EmptyFunct = => Int
Run Code Online (Sandbox Code Playgroud)

要么

 type EmptyFunct = (=> Int)
Run Code Online (Sandbox Code Playgroud)

Scala版本2.9两个问题:

  1. 为什么在第二种情况下没有语法糖?
  2. 如何在没有语法糖的情况下定义此函数?

Did*_*ont 12

=> Int不是没有参数的函数,它是一个Int参数,通过名称传递约定.(当然,这是相当好的一点,因为它通过传递没有参数的函数来实现).

写入没有参数的函数() => Int.你可以做到type EmptyFunct = () => Int.

它不是一种类型.在func里面,f将被输入为Int.类型()=> Int的参数不会.

def func(f: => Int) = f *2
Run Code Online (Sandbox Code Playgroud)

func(:=> Int)Int

def func(f: () => Int) : Int = f*2
Run Code Online (Sandbox Code Playgroud)

error:value*不是()=> Int的成员