高阶函数的定义、使用与语义
<高阶函数定义了高阶类型的处理(映射)、低阶函数处理了低阶类型的映射,高阶函数依赖于低阶函数>
高阶函数的特点:
1、定义的高阶函数本身的实现 ;
2、定义了参量函数的接口:输入、输出;
3、定义了高阶函数的功能部分对输入函数的引用或使用方式。
语义:定义高阶函数并声明混入函数的接口
本质是暴露低阶函数的接口给高阶函数使用;
scala:
def operate(f:(Int,Int) => Int ) = {
f(4,4)
swift:
protocol ViewChainable {}
extension ViewChainable where Self: UIView {
@discardableResult
func config(_ config: (Self) -> Void) -> Self {
config(self)
return self
}
}
extension UIView: ViewChainable {
func adhere(toSuperView: UIView) -> Self {
toSuperView.addSubview(self)
return self
}
@discardableResult
func layout(snapKitMaker: (ConstraintMaker) -> Void) -> Self {
self.snp.makeConstraints { (make) in
snapKitMaker(make)
}
return self
}
混入函数的混入形式(匿名函数):
语意:
调用高阶函数,同时定义符合接口声明的混入函数并传递进去
swift:
let label = UILabel()
.adhere(toSuperView: view)
.layout { (make) in
make.top.equalToSuperview().offset(80)
make.centerX.equalToSuperview()
}
.config { (label) in
label.backgroundColor = UIColor.clear
label.font = UIFont.systemFont(ofSize: 20)
label.textColor = UIColor.darkGray
label.text = "Label"
}
extension PrimitiveSequence where TraitType == SingleTrait, ElementType == Response
{
public func mapModel<T: HandyJSON>(_ type: T.Type) -> Single<Any> {
return flatMap { response -> Single<Any> in
return Single.just(response.mapModel(type))
}
}
public func updateModel<T: HandyJSON>(_ model: T) -> Single<Any> {
return flatMap { response -> Single<Any> in
return Single.just(response.updateModel(model))
}
}
}
scala:
//list元素乘以2,对每一个元素都做同一个操作
val l =List(1,2,3,4,5,6,7,8)
l.map((x:Int) => x*2)//最古老的方法
l.map(x => x*2)//简化的写法
l.map(_*2)//超简化写法
相关文章
- 在运行时打印变量或对象类型的函数
- Java实现蓝桥杯VIP 算法训练 sign函数
- python简单的函数定义和用法实例
- (C++)已知String类的定义,实现其函数体
- python简单的函数定义和用法实例
- Oracle Least()函数
- Atitit mybatis的扩展使用sql udf,js java等语言 目录 1.1. 默认,mybatis使用xml,sql等语言来书写业务流程1 2. 使用ognl调用java函数1 3
- C++:C++编程语言学习之函数的定义/调用/嵌套/回归的简介、案例应用之详细攻略
- DL之DNN:基于自定义数据集(numpy定义)利用浅层DNN(numpy定义3层前向神经网络/sigmoid函数)代码实现—探究BP神经网络底层思想
- Python语言学习:Python语言学习之函数(定义&调用函数/常用内置函数如filter&map/内嵌函数/闭包/匿名函数如lambda&map)的简介、案例应用之详细攻略
- 新手上路必学的Python函数基础知识,全在这里了(附资料和教程)
- 〖Python零基础入门篇㉛〗- 函数的定义与使用
- 〖Python语法进阶篇⑬〗- 正则表达式 - re 模块常用函数
- 从5个函数带你理解K8s DeltaFIFO
- 习题 10.6 请编写程序,处理一个复数与一个double数相加的运算,结果存放在一个double型的变量d1中,输出d1的值,再以复数形式输出此值。定义Complex(复数)类,在成员函数中包含。。
- 习题 11.3 将例11.3 的程序修改、补充,写成一个完整、正确的程序,用保护继承方式。在程序中应包括输入数据的函数。
- 【Groovy】MOP 元对象协议与元编程 ( 使用 Groovy 元编程进行函数拦截 | 重写 MetaClass#invokeMethod 方法拦截 JDK 中已经定义的函数 )
- 【Groovy】map 集合 ( map 集合定义 | 通过 getClass 函数获取 map 集合的类型 | 代码示例 )
- 构造函数 与 析构函数
- 如何使用C++回调函数
- Python标准库:内置函数dict(iterable, **kwarg)
- 3.2.5.2 模拟C函数 scanf()功能
- LCC编译器的源程序分析(19)全局函数的定义
- recv函数学习
- C语言: 定义一个函数int isprime(int n),用来判别一个正整数n是否为素数。在主函数中输入两个正整数m和n(m>=1,n>m),统计并输出m和n之间的素数的个数以及这些素数的和。
- Go 函数 参数值传递
- Matlab使用笔记(一): m文件中定义多个函数直接运行
- tensorflow 莫烦 二次函数弥拟合(四)