就像问题所说的那样。
这个是在List[() => Unit]
中发现的,该列表用于存储回调函数。
我理解List[type]
,而Unit
是一个不返回任何内容的函数的返回类型。
(T1,...,Tn) => T
是一个函数类型,它接受 T1
至 Tn
类型的参数,并返回 T
类型。因此,() => Unit
是一个不接受任何参数且返回 Unit 类型的函数类型。因此,List[() => Unit]
是包含此类函数的列表类型。
()
的含义),并返回Unit
,这是一种无结果值,类似于void。()=>Unit
的函数是无用的,因为它既不需要输入,也不需要输出。但是,Scala不是一个纯粹的函数式语言;它具有副作用。为了有用,列表中的函数肯定会产生副作用。由于它们是回调函数,它们也会有关于何时触发的想法。
f(T1):Unit
,f(T2):Unit
将是该列表的有效类型吗?那么像f(T1,T2)
这样的函数呢? - Jesvin JoseList[(T1, T2) => Unit]
的列表,那么该列表存储的是带有两个参数(第一个参数类型为 T1,第二个参数类型为 T2)并返回类型为 Unit 的函数。因此,你可以在其中存储一个定义为f(x:T1, y:T2):Unit
的函数,但不能存储一个定义为f(x:T1)
或者f(y:T2)
的函数。同样地,类型为List[() => Unit]
的列表只能存储不带任何参数的函数。 - sepp2k