函数是一个可执行代码块,它接收输入参数返回一个值。它概念上与数学中的函数相似,它接收输入并返回一个输出。
Scala是一个函数式编程语言,它将函数当作一等公民;一个函数可以像一个变量一样被使用。函数可以作为输入参数传给另一个函数。函数可以定义为一个匿名函数字面量,就像字符串字面量;函数可以被赋给一个变量。可以在一个函数内定义函数。函数可以作为另外一个函数的输出返回值。
在Scala中,一切皆对象,因此函数也必须是对象。
函数字面量
函数字面量。函数字面量指的是在源代码中的一个未命名函数或匿名函数。在程序中可以像使用一个字符串变量一样使用它。它还可以作为一个输入参数传递给一个高阶方法或高阶函数。另外,它也可以被赋给一个变量。
字面量函数的定义是使用一个小括号,里面是输入参数,后跟一个右箭头和一个函数体。函数字面量的函数体是封闭在一个可选地花括号中的。其语法为:(参数列表):返回值 => 函数体。
下面是一个函数字面量的例子:
(x:Int) => {
x + 100;
}
如果该函数体由单行语句组成,那么可以省略花括号。上面代码的一个简写版本是:
(x:Int) => x + 100;
函数字面量经常作为高阶函数的输入参数。
// 最简单的函数
() => println("hello") // 无参
(i:Int) => {println("Hello"); println(i * i); i * i} // 传入一个int参数
一切皆对象,当然函数也是对象,所以可以将它赋给一个变量:
val func1 = () => println("hello")
func1() // 执行函数
val func = (i:Int) => {println("Hello"); println(i * i)}
func(3) // 执行函数
函数字面量也可以作为一个输入参数传递给一个高阶方法或高阶函数:
val func = (i:Int) => {val j = i*i; println(j)}
val list1 = List(1,2,3,4,5)
list1.foreach(func)
或者,更简单一点:
val list1 = List(1,2,3,4,5)
// list1.foreach((i:Int) => {val j = i*i; println(j)})
// list1.foreach(i => {val j = i*i; println(j)})
list1.foreach(i => {println(i*i)})
函数执行以后可以有返回值。在Scala中,函数体的最后一行表达式的值,就是函数返回值。
val func2 = (x:Int) => {
println("这是func2的函数体")
x*x
}
val result = func2(2) // 将函数的返回值赋给变量result
println(result)
© 版权声明
本站网络名称:
知趣
本站永久网址:
https://www.qubaa.top
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长删除处理。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
暂无评论内容