繁体   English   中英

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

[英]How to define scala type for no argument function?

这有效

def func(f: => Int) = f

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

type EmptyFunct = => Int

要么

 type EmptyFunct = (=> Int)

Scala版本2.9两个问题:

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

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

没有参数的函数写成() => Int 你可以type EmptyFunct = () => Int

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

def func(f: => Int) = f *2

func(:=> Int)Int

def func(f: () => Int) : Int = f*2

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

你应该使用Function0

在第一种情况下,它不起作用,因为您声明一个非参数函数,但因为您指示该参数是按名称调用的。

我没有在方法中看到太多意义,返回一个int,没有参数调用。 要么它返回一个常量,所以你可以使用常量,或者它会使用var?

让我们来看看var:

var k = 10 
val fi = List (() => k * 2, () => k - 2)
val n = fi(0)
n.apply 
k = 11
n.apply

结果是20,然后是22。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM