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

入门级函数式编程实操

作者: 遛狗的猫 | 来源:发表于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

    相关文章

      网友评论

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

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