浩博体育博彩

您所在的位置:浩博体育博彩 > www.vinbet.com >

而另一些语言则更加强调函数式编程

时间:2015-12-23 编辑:admin 来源:未知 阅读

  我之所以对函数式代码感乐趣是由于函数式代码富有表示力,能够利用简短、紧凑的代码完成工做,同时能对特定的问题给出文雅的处理方案。现代的编程言语不约而同的朝着面向对象、函数式、动态、注释施行的标的目的成长,例如Ruby,Swift。

  AD:

  我之所以对函数式代码感乐趣是由于函数式代码富有表示力,能够利用简短、紧凑的代码完成工做,同时能对特定的问题给出文雅的处理方案。现代的编程言语不约而同的朝着面向对象、函数式、动态、注释施行的标的目的成长,例如Ruby,Swift。而另一些言语则愈加强调函数式编程,如F#,Scala,这种言语有着强大的类型揣度系统,编写的代码洁程度则令人叹为不雅止。

  正在F#编写一个两个数相加的函数,正在F# Interactive中输入:

  val twice : input:int - f:(int - int) int 这句话则是F# Interactive给出的揣度:twice函数需要一个int参数和一个(int-int)的函数做为参数,前往一个int.

  这两个例子仅仅是热身,并不是本篇博客的沉点,所以你感觉前两个例子很无聊或者没太看大白请继续看下面的总结。

  场景:某种会有一个日程放置(Schedule),面向对象方法日程放置有3中类型,只举办一次(Once),每天一次(Daily),每周一次(Weekly)。会按照日程放置(Schedule)的类型分歧具有分歧的宣传内容,分歧的延期举行策略。

  你对于如许的场景会有怎样样的思虑呢?

  一、面向过程类型的编码体例

  面向过程类型的编码是需求的曲译过程,面向对象方法代码会写成如许:

  1.显示的宣传内容:

  如许的代格违反了DRY准绳,不异的代码框架却无法沉用。

  二、面向对象的编码体例

  对于一个有经验的OO开辟者,一旦看到switch,if(type=typeof())之类的代码顿时会提高,是不是有一些笼统类型没有被找出来?正在这个例子中则会找出下面的笼统:

  如许的代码很好的处理了面向过程代码的两个问题,看起来愈加具有扩展性,跟着新类型的Schedule引入,而另一些语言则更加强调函数式编程旧的代码完全不消改动。

  当然工作也不是绝对的,什么下需要改动旧代码呢?当需要扩展Schedule的行为的时候,例如需求升级,分歧的Schedule具有分歧的举办体例,我们不得不正在每种Schedule中插手一个 void Hold()方式。

  三、函数式处理方案

  函数式言语则利用可区分结合和模式婚配来处置此类问题。

  定义一个Schedule可区分结合:

  函数式编程的处理方案认为能够很便利的添加新的行为,例如添加新的行为:Hold()。通过定义可区分结合和模式婚配来完成编码,整个处理方案像是面向过程和面向对象的一种连系体,可是侧沉点分歧,实现的代码也愈加精美。

  【编纂保举】

本月热门