scala编程-函数与闭包
来源:互联网 发布:美工平面设计培训 编辑:程序博客网 时间:2024/05/29 01:53
3.头等函数
3.1
object foreach_test{
val someNumbers = List(1,2,3,4,5,65)
//所有集合类都能用到的foreach方法。他以函数作为入参,并对每个元素都调用该函数,下面是如何用他打印输出所有列表元素的代码:
someNumbers.foreach((x:Int) => println(x))
}
foreach_test
3.2
object myFilter{
val someNumbers = List(1,2,3,5,7,9)
//集合类的filter方法选择集合里可以通过用户提供的测试的元素。测试时通过调用作为入参的函数实现的
val newList = someNumbers.filter((x:Int) => x > 5)
}
println(myFilter.newList)
4.函数字面量的短格式
4.0
//一种让函数字面量更简短的方式是去除参数类型,某些参数的类型是被推断的
object myFilter{
val someNumbers = List(1,2,3,5,7,9)
//集合类的filter方法选择集合里可以通过用户提供的测试的元素。测试时通过调用作为入参的函数实现的
val newList = someNumbers.filter(x => x > 5)
}
println(myFilter.newList)
5占位符语法
5.0
object myFilter{
val someNumbers = List(1,2,3,5,7,9)
//为了让函数字面量更加简洁,可以把下划线当做一个会更多参数的占位符,只要每个参数在函数字面量内仅出现一次
val newList = someNumbers.filter(_ > 3)
}
println(myFilter.newList)
5.1
错误
val f = _ + _
//有时把下划线当做参数的占位符,编译器可能无法推断缺失的参数类型
//error: missing parameter type for expanded function ((x$1, x$2) => x$1.$plus(x$2))
val f = _ + _
正确
val f = (_: Int) + (_:Int)
6.部分应用函数
6.1
object myforeach{
val someNumbers = List(1,2,34,4,56)
//等价于someNumbers.foreach(x => println(x))
//因此这个例子中的下划线不是单个参数的占位符。他是整个列表的占位符。
someNumbers.foreach(println _)
}
myforeach
以这种方式使用下划线时,你就正在写一个部分应用函数。scala里当你调用函数,传入任何需要的参数,实际是把函数应用的到参数上。
- scala编程-函数与闭包
- Scala 的 "匿名函数"与 "闭包"!
- scala 函数闭包
- Scala函数式编程(六)——闭包
- 函数式编程与Scala
- Scala教程(十)函数与闭包详解
- scala学习之偏函数与闭包
- Programming In Scala笔记-第八章、函数与闭包
- Scala 闭包 匿名函数
- Scala:函数和闭包
- scala闭包与柯里化
- scala函数编程--与Java的区别
- Scala入门到精通——第五节 函数、高阶函数与闭包
- Scala基础—函数式编程高阶示例,闭包、Currying等
- Scala函数值和闭包
- Scala学习--函数和闭包
- Scala基础教程(五):函数、闭包
- Scala 闭包(闭包是一个函数)
- 大数据究竟是什么?一篇文章让你认识并读懂大数据
- 第13周项目OOP版电子词典
- Win7 x64 无数字签名 驱动安装
- C语言入门教程19-预处理指令1-宏定义
- 相机为什么需要白平衡
- scala编程-函数与闭包
- android SharedPreferences类存储路径、本地数据库路径
- C# 数据结构 之 二叉树
- NOJ1184 迷失的邮票 散列表
- 自定义类写入文件
- tomcat启动停止在Initializing Spring root WebApplicationContext
- C语言入门教程20-预处理指令2-条件编译
- refresh的停车场
- java - calculator