美文网首页
入门级函数式编程实操

入门级函数式编程实操

作者: 遛狗的猫 | 来源:发表于2017-03-09 23:47 被阅读10次

浅显易懂的小实例

  • 题目

德玛西亚盖伦在召唤师之峡谷追杀蛮王,如果蛮王开大或者闪现逃跑则不追杀,否则继续追杀
  分析:
盖伦类:
 特征: 性别(char)、攻击力(int)、血量(int)、护甲(double)
 行为: 追杀 --->形参:蛮王类类型 ,返回值类型:String
蛮王类:
 特征: 性别(char)、攻击力(int)、血量(int)、护甲(double)
 行为: 开大 --->形参:空,返回值类型:boolean
     闪现 --->形参:空,返回值类型:boolean

可以简单的用Swift(3.0)实现以上这道题:
  • 首先创建一个工程, 除了主类外创建盖伦, 蛮子类

    Paste_Image.png
  • 在蛮子类中定义如下属性和方法

// 蛮子
import Foundation

class manZi: AnyObject {
    // 攻击力 血量 护甲满槽均为100, 性别为字符串形式
    var gender : CChar = 98  // 性别: ASCII编码中 97 == a 98 == b  这里b 代表男
    var atk : Int = 99   // 攻击力
    var blood : Int = 80 // 血量
    var armor : Double = 50  // 护甲
    
    func openTrick() -> Bool {   // 形参在小括号中为空, 返回值为boolean类型
//        print("蛮王开大, 五秒真男人")
        return true         // true 蛮子开大
    }
    func flashOut() -> Bool {
//        print("蛮王闪现, 五分钟后又是一条好汉")   // 假设大招五分钟CD
        return true     // true 开闪现
    }
}
  • 在德玛西亚盖伦中定义如下(看好咯! 核心代码):
import Foundation
// 这是盖伦
class gaiLun : AnyObject {
    // 攻击力 血量 护甲满槽均为100
    var dGender : CChar = 98  // 性别: ASCII编码中 97 == a, 98 == b  这里b=>代表男
    var dAtk : Int = 100   // 攻击力
    var dBlood : Int = 100 // 血量
    var dArmor : Double = 100  // 护甲
    
    func dChase(_ manziFuncName:()->Bool) -> String {   // 当函数作为形参(参数)==>函数式编程, 返回值为String类型
        return "蛮子\(manziFuncName() ? "开大了":"闪现了"), 盖伦\(manziFuncName() ? "停止追杀":"继续追杀")"         // 这里盖伦追不追杀蛮子取决于蛮子执行方法没(manziFuncName)
        
    }
    
}
  • 在玩家类(主类)中实现它们俩:
// 玩家类
import Foundation

// 函数式编程
let gailun = gaiLun()  // 盖伦
let manzi = manZi()  // 蛮子

let result = gailun.dChase(manzi.openTrick)  //  函数作为形参, 这里会自动做类型推导, dChase方法返回的是String类型, 所以 result 是 String 类型
print("结果 == \(result)")

print("蛮子属性:性别=\(String.init(format: "%c", manzi.gender)), 血量=\(manzi.blood), 攻击力=\(manzi.atk), 护甲=\(manzi.armor)")

  • 最后, 看结果吧, 重在理解

Result.png

相关文章

  • 入门级函数式编程实操

    浅显易懂的小实例 题目 德玛西亚盖伦在召唤师之峡谷追杀蛮王,如果蛮王开大或者闪现逃跑则不追杀,否则继续追杀  分析...

  • RxSwift初探(1)

    一、前提:函数响应式编程思想 简单来说 函数响应式编程 = 函数式编程 + 响应式编程 (1)函数式 函数式编程是...

  • iOS 函数编程 & 链式编程

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

  • 函数式编程(一)—— 前置知识

    为什么要学函数式编程? 什么是函数式编程?函数式编程和面向对象编程的不同对于函数式编程思维方式的理解: 函数式编程...

  • 二十二、函数式编程、面向协议式编程

    函数式编程(Functional Prigramming) 函数式编程 函数式编程(Functional Prig...

  • Python中的函数式编程

    函数式编程 说到函数式编程,我们的重点在于为什么要采用函数式编程,而不是什么是函数式编程。 函数式编程的优点:一、...

  • 实操Redission

    实操Redission 分布式对象(一)实操Redission 分布式Map集合(二)实操Redission 分布...

  • RxSwift-初探

    函数响应式编程 一:函数式 函数式编程简称FP(Functional Programming),函数式编程就是一种...

  • 《Kotlin入门实战》CH5 | 函数与函数式编程

    函数与函数式编程 函数式编程与命令式编程最大的不同是:函数式编程的焦点在于数据的映射,命令式编程(imperati...

  • 函数响应式编程思想 & RxSwift 核心逻辑(一)

    函数响应式编程思想 函数响应式编程思想即是将函数式编程和响应式编程相结合。 函数式编程 顾名思义,就是像函数一样的...

网友评论

      本文标题:入门级函数式编程实操

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