3
A
回答
4
正如Advantages of Scala’s Type System提到的,它是一个功能型。
文章Scala for Java Refugees Part 6: Getting Over Java在其“高阶函数”部分描述了该语法。
def itrate(array:Array[String], fun:(String)=>Unit) = {
for (i <- 0 to (array.length - 1)) { // anti-idiom array iteration
fun(array(i))
}
}
val a = Array("Daniel", "Chris", "Joseph", "Renee")
iterate(a, (s:String) => println(s))
看到了吗?语法很自然,你几乎会错过它。
从顶部开始,我们查看类型的有趣参数,我们看到(type1, …)=>returnType
语法,它指示了一种功能类型。
在这种情况下,fun将是一个函数,它接受String类型的单个参数并返回Unit(实际上是void,所以什么都没有)。
在函数的两行中,我们看到了实际调用函数的语法。对待fun就好像它是范围内可用的方法一样,调用语法是相同的。
C/C++黑暗时代的退伍军人会认识到这种语法让人联想到函数指针如何在当天处理。
区别在于,不需要担心内存泄漏,也不需要太多明星符号引入过度冗余。
你的情况:def func(arg: String => Int): Unit
,arg
将是一个函数取一个字符串并返回一个int。
9
简短的回答
其接收一个字符串并返回一个诠释
龙答案
功能在斯卡拉,职能是一等公民。这意味着你可以将它们存储在变量中或者(像这样)将它们作为参数传递。
这是一个函数文字看上去象
() => Unit
这怎么就是不接收参数和返回股(Java的等同于无效)的功能。
这将是接收字符串作为参数,并返回一个int的函数:
(String) => Int
此外,斯卡拉让我们在您的例子下降括号作为语法糖的形式,等等。前面的arg:
只是参数的名称。
里面func
你会调用该函数接受(arg
)是这样的:
val result = arg("Some String") // this returns a Int
4
您也可能会看到它写的(可能由反编译)作为
def func(arg: Function1[String, Int]): Unit = {
// body of function
}
他们是完全等效。
相关问题
- 1. Python3:这个“%”在这段代码中意味着什么?
- 2. 这个“this”在这段JavaScript代码中意味着什么?
- 3. 在这段JavaScript代码中,'&&'表达意味着什么?
- 4. 这段代码在简单英语中意味着什么?
- 5. 这段代码在Meteor中意味着什么?
- 6. 这是什么混淆JavaScript代码段意味着/做什么?
- 7. 这段代码片段究竟意味着什么?
- 8. 在numpy代码中意味着什么?
- 9. 关于这段代码意味着什么的C#问题
- 10. 这个javascript代码片段究竟意味着什么?
- 11. PREEMPTIVE_XE_DISPATCHER这意味着什么?
- 12. $这意味着什么PHP?
- 13. * | *这意味着什么CSS?
- 14. 这行代码在C++中意味着什么?
- 15. 函数(i)在这个jQuery代码中意味着什么?
- 16. 在gdb中这意味着什么?
- 17. 在MongoDB中这意味着什么?
- 18. 这在PowerPC中意味着什么?
- 19. 这在AS3中意味着什么?
- 20. 什么是“这”意味着这些代码之间的区别
- 21. 在C新型功能++ - 这是什么代码意味着
- 22. 什么robots.txt意味着在这一行?
- 23. %s在这里意味着什么?
- 24. 这是什么头意味着在PHP
- 25. 什么是| smtp |在以下Ruby代码片段中意味着什么?
- 26. 这些退出代码对于MPI程序意味着什么?
- 27. 这是什么行Python代码意味着
- 28. 这对我老板的python代码意味着什么?
- 29. 这是什么代码意味着蟒蛇,
- 30. MySQL错误代码1054不知道这意味着什么
你的意思是'arg'是一个函数...。对? – 2010-06-26 18:05:43
是的,让我编辑和澄清 – 2010-06-26 18:07:09