Scala 与签名()匹配的匿名函数=>;单位:斯卡拉
下面的代码行是不言自明的Scala 与签名()匹配的匿名函数=>;单位:斯卡拉,scala,types,anonymous-function,Scala,Types,Anonymous Function,下面的代码行是不言自明的 type a = () => Unit def k(a_ : a) = { a_() } def g(): Unit = { println("Hello World") } k(g) 我的问题是,在调用k时,如何指定类型为a的匿名函数?我希望以下几行也是不言自明的: scala> k(() => println("Hello!")) //to your first question Hello! 关于第二个问题: scala>
type a = () => Unit
def k(a_ : a) = {
a_()
}
def g(): Unit = {
println("Hello World")
}
k(g)
我的问题是,在调用k时,如何指定类型为
a
的匿名函数?我希望以下几行也是不言自明的:
scala> k(() => println("Hello!")) //to your first question
Hello!
关于第二个问题:
scala> def k(i: Int)(a_ : a) = {
a_(i)
}
k: (i: Int)(a_: Int => Unit)Unit
scala> k(5)(g)
Swami saranam 5
另外,我不建议使用小写的别名。在同一行中,
type a=Int=>Unit
def k(a:a)={
,要执行上述函数k(a:a)
,我将无法指定a()
,因为它需要Int参数,如何执行该函数第二点是您必须指定输入I
,所以你需要一些函数来处理它-所以我写了print
函数-它用I
调用k
和g
的组合,而I
但是我的类型a=Int=>单位这次不同了,在k
的函数体中不能有a()
要执行该函数,如果我听起来有点困惑,很抱歉只需在k
中再添加一个参数即可,我已经用示例更新了答案