// 柯里化

// http://www.jianshu.com/p/6eaacadafa1a                               Swift 2.0 柯里化方法 (废弃)

// http://www.swifthumb.com/thread-16079-1-1.html                      Swift 3.0 柯里化常用方法推荐

// http://www.ruanyifeng.com/blog/2012/04/functional_programming.html  函数式编程

/*

Curried function declaration syntax func foo(x: Int)(y: Int) is of limited usefulness and creates a lot of language and implementation complexity. We should remove it.

(函数的 currying 特性的使用场景并不大,但他会增加很多语言的复杂性,所以需要删除它)

*/

 class Currying

 {

     // uncurried:普通函数

     // 接收多个参数的函数(与类相关的函数,统称为方法,但是这里就直接说函数了,方便理解)

     func add(a: Int, b: Int, c: Int) -> Int{

         print("\(a) + \(b) + \(c)")

         return a + b + c

     }

     // curried:柯里化函数 --> 本质函数式编程思想

     func addCur(_ a: Int) -> (Int) -> (Int) -> Int{

         return {

             b in

             return {

                 c in

                     a + b + c

             }

         }

     }

 }

 let curry = Currying()

 var number = Currying.addCur(curry)()()()

 print(number)

 // NO.2

 let datePrint:(Int)->(Int)->(String)->Void =

 {

     month in

     print("\(month)月")

     return{

         day in

         print("\(day)日")

         return{

             action in

             print("\(action)")

         }

     }

 }

 let actionPrint = datePrint()()

 actionPrint("写详细")

最新文章

  1. JAVA插入sql代码
  2. R----stringr包介绍学习
  3. NDK开发之引用(局部引用,全局引用,虚全局引用)
  4. Java垃圾收集器之--Garbage-First Collector
  5. cookie、localStorage、sessionStorage之间的区别
  6. Dynamics CRM 2011编程系列(60):JS编程之CRUD辅助类(JQuery版)
  7. 一个测ip和端口是否联通的工具类
  8. C++教材
  9. Swift try try! try?使用和区别
  10. 轻松学JVM(二)——内存模型、可见性、指令重排序
  11. hdu 6068--Classic Quotation(kmp+DP)
  12. it's time to change myself now (2018.10.31)
  13. [转]Angular4 数据请求 POST、GET
  14. mysql 备份 恢复
  15. go语言中的strings常用函数和格式化输出
  16. Amount of Degrees(数位dp)
  17. 《OpenGL® ES™ 3.0 Programming Guide》读书笔记1 ----总览
  18. 对2个hex(16进制)字符串进行异或操作
  19. 一点做用户画像的人生经验:ID强打通
  20. (转)为什么所有浏览器的user-agent都是Mozilla

热门文章

  1. 【Maven】Nexus配置和使用
  2. 2018.10.12 bzoj4712: 洪水(树链剖分)
  3. 2018.09.15点名器(简单dp)
  4. php读取用友u8采购入库单列表及详细
  5. @Autowired 和 @Qualifier
  6. "请求被中止: 未能创建 SSL/TLS 安全通道"解决办法
  7. Linux中的LVM和软RAID
  8. Paul Simon -- Duncan
  9. 章文嵩博士和他背后的负载均衡(LOAD BANLANCER)帝国
  10. 一起学习MVC(4)Controllers的学习