
【31】kotlin 函数复合
发布日期:2021-05-07 18:51:30
浏览次数:20
分类:精选文章
本文共 1794 字,大约阅读时间需要 5 分钟。
code
package com.yzdzy.kotlin.chapter5.componse//求f(g(x))// 如果m(x)=f(g(x))//那么 m就是fgx的复合val add5 = { i: Int -> i + 5 }val multiplyBy2 = { i: Int -> i * 2 }//复合函数infix funFunction1 .andThen(function: Function1 ): Function1 { return fun(p1: P1): R { return function.invoke(this.invoke(p1)) }}fun main(args: Array ) { //(5+8)*2 val res = multiplyBy2(add5(8)) println(res) //复合后 val and5AndMultiplyBy2 = add5 andThen multiplyBy2 println(and5AndMultiplyBy2(8))}
哦 好tm的复杂
我们来简单解析一下
//拆解上面一下/*p1 p2 代表参数R代表返回值p1 8p2 add5的返回值* andThen 是扩展方法。扩展的方法1* infix 是中缀表达式,不用点也不用括号* Function1 代表传入一个参数的函数p1代表参数类型 p2代表返回值类型* andThen 后面的 Function1 代表 multiplyBy2** */
还有一种
compose写法
package com.yzdzy.kotlin.chapter5.componse//求f(g(x))// 如果m(x)=f(g(x))//那么 m就是fgx的复合val add5 = { i: Int -> i + 5 }val multiplyBy2 = { i: Int -> i * 2 }//复合函数infix funFunction1 .andThen(function: Function1 ): Function1 { return fun(p1: P1): R { return function.invoke(this.invoke(p1)) }}//拆解上面一下/*p1 p2 代表参数R代表返回值p1 8p2 add5的返回值* andThen 是扩展方法。扩展的方法1* infix 是中缀表达式,不用点也不用括号* Function1 代表传入一个参数的函数 p1代表参数类型 p2代表返回值类型* andThen 后面的 Function1 代表 multiplyBy2** */infix fun Function1 .compose(function: Function1 ):Function1 { return fun(p1:P1):R{ return this.invoke(function.invoke(p1)) }}fun main(args: Array ) { //(5+8)*2 val res = multiplyBy2(add5(8)) println(res) //复合后 val and5AndMultiplyBy2 = add5 andThen multiplyBy2 //m(x) = f(g(x)) println(and5AndMultiplyBy2(8)) val and5ComposeMultiplyBy2 = add5 compose multiplyBy2 //m(x) = g(f(x)) println(and5ComposeMultiplyBy2(8))}
26
26 21发表评论
最新留言
初次前来,多多关照!
[***.217.46.12]2025年04月18日 06时34分12秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ORACLE 客户端工具
2021-05-08
基于LabVIEW的入门指南
2021-05-08
weblogic之cve-2015-4852
2021-05-08
Java注释
2021-05-08
C++ 函数重载
2021-05-08
.NET微信网页开发之使用微信JS-SDK调用微信扫一扫功能
2021-05-08
使用mybatis-generator生成底层
2021-05-08
Mybatis【5】-- Mybatis多种增删改查那些你会了么?
2021-05-08
计算输入的一句英文语句中单词数
2021-05-08
lvs+keepalive构建高可用集群
2021-05-08
6 个 Linux 运维典型问题
2021-05-08
取消vim打开文件全是黄色方法
2021-05-08
一个系统部署多个tomcat实例
2021-05-08
HP服务器设置iLO
2021-05-08
从头实现一个WPF条形图
2021-05-08
使用QT实现一个简单的登陆对话框(纯代码实现C++)
2021-05-08
QT :warning LNK4042: 对象被多次指定;已忽略多余的指定
2021-05-08
GLFW 源码 下载-编译-使用/GLAD配置
2021-05-08
针对单个网站的渗透思路
2021-05-08