美文网首页
链式编程、函数式编程

链式编程、函数式编程

作者: 写一本2000000的书 | 来源:发表于2019-06-26 11:37 被阅读0次

一.链式编程

定义:是将多个操作(多行代码)通过点号"."链接在一起成为一句代码。

核心:声明一个Block的属性;这个block返回值必须还是一个对象(根据业务需求不同,可以返回的是这个对象实例本身,也可以是这个类的另一个实例,更可以是另一个类的实例对象)。

二.函数式编程

定义:把操作尽量写成一系列嵌套函数或者方法调用。

核心:每个方法必须返回值是本身对象,把函数或者block当做参数

Block参数:(需要操作的值)
Block返回值:(操作结果)
补充:
合成:如果一个值要经过多个函数,才能变成另外一个值,就可以把所有中间步骤合并成一个函数,这叫做函数的合成
柯里化:柯里化,就是把一个多参数的函数,转化为单参数函数
类型 作手点 特点
链式编程 属性 声明一个block属性, block返回值必须还是一个对象
函数式编程 方法 每个方法必须返回值是本身对象,把函数或者block当做参数。

链式编程示例

//
//  CalculatorMaker.swift
//  链式编程示例
//
//  Created by apple on 2018/11/27.
//  Copyright © 2018 apple. All rights reserved.
//

import UIKit

class CalculatorMaker: NSObject {
    var result : Int = 0
    
    func add(num : Int)-> CalculatorMaker {
        result += num
        return self
    }
    
    func sub(num : Int)-> CalculatorMaker {
        result -= num
        return self
    }
    
}

class Calculator {
    static func beginCalculator( calculatorBlock:(CalculatorMaker)->()) -> Int {
        let calculator = CalculatorMaker()
        calculatorBlock(calculator)
        return calculator.result
    }
}

let result = Calculator.beginCalculator { (calculator) in
            _ = calculator.add(num: 1).sub(num: 2)
        }
        
        print("result-----\(result)")

函数式编程示例

//
//  Caculator.swift
//  函数式编程示例
//
//  Created by apple on 2018/11/27.
//  Copyright © 2018 apple. All rights reserved.
//

import UIKit

class Caculator: NSObject {

    var result:Int = 0
    var isEqule:Bool = false
    
    
    /// 加法运算
    ///
    /// - Parameter operation: 参数`operation` block, result 操作的值, block 返回值即是操作结果
    /// - Returns: 返回 `Caculator` 对象
    func add(operation: (_ result:Int) -> Int) -> Caculator {
        result = operation(result)
        return self
    }
    
    /// 减法运算
    ///
    /// - Parameter operation: 参数`operation` block, result 操作的值, block 返回值即是操作结果
    /// - Returns: 返回 `Caculator` 对象
    func minus(operation: (_ result:Int) -> Int) -> Caculator {
        result = operation(result)
        return self
    }
    
    /// 乘法运算
    ///
    /// - Parameter operation: 参数`operation` block, result 操作的值, block 返回值即是操作结果
    /// - Returns: 返回 `Caculator` 对象
    func multiply(operation: (_ result:Int) -> Int) -> Caculator {
        result = operation(result)
        return self
    }
    
    /// 除法运算
    ///
    /// - Parameter operation: 参数`operation` block, result 操作的值, block 返回值即是操作结果
    /// - Returns: 返回 `Caculator` 对象
    func divide(operation: (_ result:Int) -> Int) -> Caculator {
        guard result != 0 else {
            result = 0
            return self
        }
        result = operation(result)
        return self
    }
    
    
    func isEqual(operation: (_ result:Int) -> Bool) -> Caculator {
        isEqule = operation(result)
        return self
    }
    
}

// 什么是函数式编程思想:把一个操作写成一系列的方法
        // 需求:写一个计算器,并且计算器的结果是否等于100
       let isEqule = Caculator.init().add { (result) -> Int in
            print("return:\(result)")
            return result + 100
        }.multiply { (number1) -> Int in
                return number1 * 100
        }.isEqual { (result) -> Bool in
                return result == 110
        }.isEqule
    
        print("result-----\(isEqule)")

相关文章

  • iOS-链式编程

    函数式编程------->链式编程 函数式编程: 调用方式 我们最终目的是将函数式编程转换为链式编程:首先将调用方...

  • iOS 函数编程 & 链式编程

    函数式(链式)编程 函数式编程概念 函数式编程是种编程范式 函数式编程 Functional Programmin...

  • ReactiveObjC入门

    ReactiveObjC基础用法 iOS开发三种编程方式(响应式编程、函数编程、链式编程),函数编程最常用,链式编...

  • iOS链式编程及函数式编程

    提到链式编程和函数式编程,最典型的代表是Masonry 比较完美的实现了函数式编程和链式编程。例如 ``` [vi...

  • iOS链式、函数式和响应式编程

    原文编程思想-iOS链式、函数式和响应式编程 在了解链式、函数式和响应式编程前,我们需要回顾下Block,它在下面...

  • 工作iOS技术总结

    链式编程、函数式、面向接口编程思想 iOS 之ReactiveCocoa 链式编程2 WKWebView的缓存处理...

  • 链式编程与函数编程

    1. 链式编程 2. 函数式编程 例子:

  • 函数式编程 响应式编程

    学习函数式编程对于我们理解Masonry && Snapkit有很大的帮助,函数式编程(链式编程)。下面文章也是参...

  • iOS-Main-链式编程和函数式编程体验

    Masonry 经典的代表链式编程和函数式编程 思考,怎么样创建一个自己的函数式或链式编程呢? 创建项目,并搞一个...

  • OC中链式编程和函数式编程

    最近看到了链式编程和函数式编程这两个概念,这两天不是那么的忙 所以也研究了下这两个概念;在查询链式编程和函数式编程...

网友评论

      本文标题:链式编程、函数式编程

      本文链接:https://www.haomeiwen.com/subject/yppxcctx.html