当前位置: 首页 > news >正文

网站建设结课策划书网址的英文

网站建设结课策划书,网址的英文,菏泽网站建设价位,启用wordpress rest api之前的文章提到函数式编程的一等函数#xff08;First-class Function#xff09;四个性质中有“可以将过程作为返回值”这一点#xff0c;但这一点在实际使用中不如“将过程作为参数”#xff08;高阶函数#xff09;用得多。本文介绍一种这个性质用于分步函数的应用。 …之前的文章提到函数式编程的一等函数First-class Function四个性质中有“可以将过程作为返回值”这一点但这一点在实际使用中不如“将过程作为参数”高阶函数用得多。本文介绍一种这个性质用于分步函数的应用。 注意本文旨在介绍一种编程技巧希望可以给读者一点启发并非介绍某类问题的最优解实际使用还需具体问题具体分析 问题场景 相信所有人都接触过一类需求完成某个任务x这个任务x由三个步骤a、b、c组成比如一个拍照功能可能包含三个步骤1. 调起摄像头拍照2. 编辑优化照片3. 保存照片到相册。那么这类功能最简单的形式就是 class Demo{public static void main(String[] args) {taskX();}static void taskX(){//1. 执行第一步System.out.println(step 1...);//1. 执行第二步System.out.println(step 2...);//1. 执行第三步System.out.println(step 3...);} }但是有时候我们并不要求这三个步骤一气呵成允许完成各个步骤后去做点其他事情然后再回来做剩余工作。又或者其中某个步骤在有些时候不能直接执行需要一些准备工作。比如上面所说的拍照示例中在Android平台调用摄像头得请求到摄像头权限然后保存相册还需要文件访问权限。这类行为和系统平台相关如果我们想一套代码运行于多个平台上就得分离核心功能和平台相关功能。 一种方式是直接把三个步骤写成三个子过程 class Demo {public static void main(String[] args) {TaskX.step1();System.out.println(do other task....);TaskX.step2();System.out.println(do other task2....);TaskX.step3();} }class TaskX{static void step1() {System.out.println(step 1...);}static void step2() {System.out.println(step 1...);}static void step3() {System.out.println(step 1...);} }但是这样相当于直接暴露三个子步骤外部可以以任意顺序调用三个步骤而且如果step2的执行依赖于step1的执行成功那么就可能引发问题需要额外的文档/注释来说明即便有了注释也没法保证安全。这里假设写TaskX模块的人与使用的人并非同一个 如果我们可以像下面这样表达一个过程 主过程1. 子过程12. 子过程23. 子过程3并且这些子过程的执行分步执行那么就可以处理这个情况了。 分步过程的实现 如果我们把一个无参无返回值的过程的类型写作() - void那么分步函数的类型是不是可以写作() - - - void表示可以分三步执行这个表示法稍微再加点元素就是() - () - () - void跟柯里化的形式很像对吧接下来就是要利用这个。 这样的过程用Scala很容易表达 val taskX () {println(step 1...)() {println(step 2...)() {println(step 3...)}} }但是用Java我们就得写成 class Demo {public static void main(String[] args) {SupplierSupplierRunnable taskXSupplier doTaskX();SupplierRunnable step2Supplier taskXSupplier.get();//执行step1System.out.println(do other task....);Runnable step3 step2Supplier.get();//执行step2System.out.println(do other task....);step3.run();执行step3}static SupplierSupplierRunnable doTaskX() {return () - {System.out.println(step 1...);return () - {System.out.println(step 2...);return () - System.out.println(step 3...);};};} }调用方的代码太难看我们添加几个函数式接口来稍微美化一下 class Demo {public static void main(String[] args) {Step1 step1 doTaskX();Step2 step2 step1.run();//执行step1System.out.println(do other task....);Step3 step3 step2.run();//执行step2System.out.println(do other task....);step3.run();//执行step3}static Step1 doTaskX() {return () - {System.out.println(step 1...);return () - {System.out.println(step 2...);return () - System.out.println(step 3...);};};}public interface Step1 {Step2 run();}public interface Step2 {Step3 run();}public interface Step3 extends Runnable {} }这样每次写接口定义也挺麻烦我们可以预先定义好Step1、Step2…Step10这样写过程的时候想分几步就选择对应类型的接口。 简化分步过程的编写 如果不想定义接口我们可以编写这样一个工具MultiStepTask class MultiStepTask {private final IteratorRunnable stepIterator;private MultiStepTask(ListRunnable stepList) {stepIterator stepList.iterator();}public static MultiStepTask create(Runnable... actions) {ListRunnable stepList Arrays.stream(actions).toList();return new MultiStepTask(stepList);}public void doNext() {if (stepIterator.hasNext()) {stepIterator.next().run();}}public void doComplete() {while (stepIterator.hasNext()) {stepIterator.next().run();}}public boolean isCompleted(){return !stepIterator.hasNext();} }这样我们的创建分步过程的代码就变成了 static MultiStepTask taskX() {return MultiStepTask.create(() - System.out.println(step 1...),() - System.out.println(step 2...),() - System.out.println(step 3...)); }然后调用的代码就是 class Demo {public static void main(String[] args) {MultiStepTask taskX taskX();taskX.doNext();//执行step1System.out.println(do other task....);taskX.doNext();//执行step2System.out.println(do other task....);taskX.doNext();//执行step3} }
http://www.hkea.cn/news/14449484/

相关文章:

  • 传奇网站模板使用石家庄做家教网站
  • 常见的网站建设技术网站文件夹没有权限
  • 网站外链价格网站长期建设 运营计划
  • 无锡网站的优化哪家好电商网站开发分销商
  • 世界网站北京网站优化关键词排名
  • ftp服务器搭建设置网站信息河北网站制作公司报价
  • 山东建设管理局网站创什么网站吸引人
  • 湘潭企业网站建设 磐石网络门户网站 建设 北京 航天
  • 提升访问境外网站速度wordpress写模版
  • 做网站前期工作果洛营销网站建设公司
  • 深圳最专业的高端网站建设如何弄微信小程序店铺
  • 公司网站域名备案wordpress推广机制
  • 做seo网站 公司周口logo设计公司
  • 个人怎么建网站网站建设开发合同书(终极版)
  • 唯品会一家做特卖的网站 分析如何建一个购物网站
  • 安全培训网站如何做网站不容易被攻击
  • 做企业门户网站要准备哪些内容app 门户网站
  • 淘宝优惠网站建设宁波外贸公司一览表
  • 建设摩托车官网官方网站wordpress怎么加背景
  • 建网站的意义在试用网站做推广
  • 厦门的网站建设公司哪家好网站建设的报价为什么不同
  • linux系统网站架构做自行车网站应该注意什么
  • 贵阳58同城做网站公司有哪些个人网站备案所需材料
  • 烟台城乡建设学校96级给排水网站佛山广告设计公司排名
  • 网站 云建站中国互联网数据平台
  • 包装设计网站哪个好用外贸公司一年能赚多少
  • 如何在网上做网站中医药文化建设网站
  • 自建购物网站网站图片素材下载
  • 建网站深圳旅游网站设计的建设原则
  • 网站的类型大全企业网站优化做什么