2015-05-13 32 views
0

下面的代码行不言自明匿名函数匹配签名()=>单位:斯卡拉

type a =() => Unit 

def k(a_ : a) = { 
    a_() 
} 

def g(): Unit = { 
    println("Hello World") 
} 

k(g) 

我的问题是如何指定a类型的匿名函数调用时K +

+0

以相同的线,'键入= INT => Unit' 'DEF K(A_:1)= {'' a_' '}' 'DEF克(I:智力):单位= {' 'println(“Hello World”+ i)' '}' 'k(g)',要执行上述函数'k(a_:a)',我将无法指定'一个_()',因为它会期望Int参数,如何执行该功能 –

回答

2

我希望这些线路也言自明:

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别名。

+0

我明白第一个答案,谢谢你。 –

+0

第二是无论如何你必须指定你的输入'i',所以你需要一些函数来处理它 - 所以我写了'print'函数 - 它需要'i'并且调用'k'和'​​g '''''''' – dk14

+0

但我的'type a = Int => Unit'这次是不同的,在'k'的函数体中不能有'a _()'来获得执行的功能,对不起,如果我听起来很困惑 –