ZhipingYang / DataResource

专门存储开源库的文件(图片,gif等等)
0 stars 0 forks source link

Swift -vs- Kotlin: 拓展篇 👊(未完待续) #3

Open ZhipingYang opened 7 years ago

ZhipingYang commented 7 years ago

Swift -vs- Kotlin: 拓展篇 👊

脱单秘诀

Swift:

Kotlin 君,我看你最近加班多,都快没有时间谈恋爱了?你和你的女神近况怎么样?

Kotlin

Swift君,别闹。我们只是朋友关系;

Swift

傻子都看得出来你对你的女神有意思,看你单身20余载,恋爱经验匮乏,要不要我传授你撩妹秘诀?

Kotlin

懂我者Swift君也,快说说看;

Swift

以我们Swift为例,我们先定义一个人类,然后你就是kotliner和你女神angel

class Human {
    var name: String
    var age: Int
    var lover: Human?
    init(_ name:String, age: Int) {
        self.name = name
        self.age = age
    }
}

var kotliner = Human.init("Kotliner", age: 26)
var angel = Human.init("Angel", age: 27)

第一步,我教你先识别你的女神是不是单身, extension 就可以给 Human 添加一个是否单身的属性(计算性属性)

extension Human {
    var isSingle: Bool {
        return lover == nil
    }
}
let angelIsSingle = angel.isSingle // true

你看, 恭喜👏恭喜🎉,女神还单身,你有机会是吧!

Kotlin

这TMD也可以啊,看我也现学现卖一下;


//code

Swift

学的不错,看样子Kotlin君天资聪慧,不就就可以脱单了; 看你的女神比较高冷,我再教你一个秘诀通过Extension,立即让Human学会一个陷入爱河的方法(func)

extension Human {
    func fallInLoveBy撩X秘籍(_ lover: Human) {
        self.lover = lover;
    }
}

angel.fallInLoveBy撩X秘籍(kotliner)
let isSingle = angel.isSingle // false
let angelsLover = angel.lover?.name // Kotliner

看,你的女神不是单身了,而且爱上你了;

当然在Swift里甚至可以让全世界不论男女都爱上你

extension Human {
    class func perfectLoversName() -> String {
        return "Kotliner"
    }
}
var name = Human.perfectLoversName() // Kotliner

Kotlin

这个好,我也试试看看


// code

我还悟出了其他的撩妹技巧,你也看看你以前用过没有;

// code

Swift

不错不错,可以借鉴;以前我父母他们那一辈有媒妁之约,男孩女孩一出生就婚定一生,前面一大堆的拓展学习太麻烦都可以省去,我直接在你女神出生那一刻就给你定娃娃亲,这事就简单了;(构造器)

当你的女神还是一个baby的时候,订个娃娃亲就好简单了

extension Human {
    // 刚刚出生 age=0
    init(birthWithName name: String, lover: Human?) {
        self.name = name
        self.lover = lover
        self.age = 0
    }
}
// Angelababy(感情你女神是杨颖啊)
var angelBaby = Human.init(birthWithName: "Angel", lover: kotliner)

哈哈哈,一下子就成了。

Kotlin

xxxxxxxxxx


// code

我去,原来这些我都这么快就学会了。女神我已经追求到手了,我们打算明天求婚。

Swift

等等等一下。。好不容易追到你女神,要好好爱护她,不过还好你是程序员,物质基础比较牢靠,但要有一份稳定的工作先保证;

Kotlin

是是是,我这边公司加班太多了,以后都没法陪老婆孩子,想换一家工作时间分配比较合理一点的公司,你给我推荐一下吧;

Swift

好,这份我们公司的程序员工作合同,签了它就可以过来上班了

protocol DeveloperJobProtocol {
    var job:String { get }
    var salary: Int { get }
    var level: Int { get }
    var childSex: Sex { get }
}

签合同很简单,看我给你演示一下


enum Sex {
    case male, female
}

extension Human: DeveloperJobProtocol {
    var job:String {
        return "Andriod"
    }
    var salary: Int {
        return level*2000 + 6000
    }
    var level: Int {
        return 6
    }
    var childSex: Sex {
        return .female
    }
}

kotliner.salary // 18k

这是我们公司根据你的情况给你做的合同

Kotlin

18k,很好。知足了

  //code

childSex 是什么鬼?

Swift

你做了程序员,那你不就注定生女儿了嘛。我都想象到未来你们生女儿一起生活的画面了!(拓展嵌套类型)

extension Human {

    class Child: Human {
        var sex:Sex = kotliner.childSex
        weak var father: Human? = kotliner
        weak var mother: Human? = kotliner.lover
    }
    var daughter: Child {
        return Child.init("littleAngel", age: 0)
    }
}

let yourChild = kotliner.daughter
let childFatherName = yourChild.father?.name // Kotliner

Kotlin

哇!!!当程序员居然有这个福利。我喜欢生女儿,生女儿好;可是为什么我女儿的父亲母亲要用weak

Swift

你傻啊,你女儿终有一天会嫁出去的,不用weak的话就和你循环引用释放不了,你还想留你女儿一辈子?但是Human的lover我没有加weak,就是故意让你们相互引用,相守一身不离不弃;

Kotlin

我。。。(感动ing)

Swift

好了好了,你先关注当下 婚礼的事情只欠东风,你这还没有结婚就有孩子了,明儿求婚还不是百分百搞定;

Kotlin

Swift君,多谢兄弟帮忙;婚礼的事情也希望请你多多指教,我没有经验;

Swift

其实都差不多了,就差一本结婚证,你们能够遵守婚姻协议后这事就成了

// 婚姻协议
protocol MarriageProtocol {
    var promise:String { get }
    var approveByGovernment: Bool {get}
}

// 这协议的内容我已经限制人类身上了,动物结婚不需要政府允许的
extension MarriageProtocol where Self: Human {
    // 誓言承诺
    var promise: String {
        return "我愿意无论是顺境或逆境,富裕或贫穷,健康或疾病,快乐或忧愁,都将毫无保留地爱ta,对ta忠诚直到永远。无论是健康或疾病。贫穷或富有,无论是年轻漂亮还是容颜老去,我都始终愿意与ta,相亲相爱,相依相伴,相濡以沫,一生一世,不离不弃"
    }
    // 政府允许
    var approveByGovernment: Bool {
        return true
    }
}

剩下的你们遵守婚姻协议就好了

// 人类遵守了婚姻协议:1.履行承诺;2.政府认可
extension Human: MarriageProtocol {}

let kotlinerPromise = kotliner.promise
let angelPromise = angel.promise
let angelAuthentic = kotliner.approveByGovernment // true
let kotlinerAuthentic = angel.approveByGovernment // true

好了,你们的婚姻都有政府见证,都有对方的誓言。恭喜你kotlin君🎉,你脱单了

Kotlin

Swift君 😭,我说不出话了。好兄弟无言表达我的谢意;

Swift

这没什么,我只是分享指导了我的撩妹技巧而已;

内心独白:

TMD,为啥我Swift君指导别人都能成功,自己单身狗当着都是偷偷摸摸的。不做iOS了,我要转Android开发;脱单的可能不是考秘籍,而是靠Google爸爸啊 😩

mysiga commented 7 years ago

Kotlin Code ???

ZhipingYang commented 7 years ago

https://mp.weixin.qq.com/s?__biz=MzU3MDA3NzMzOA==&mid=2247483719&idx=1&sn=9b4b3ab235777689aee0d6b4274da8bc&chksm=fcf5b8b2cb8231a41038d8820672c4e99039e4126597a7819efe8aeecd75015894cf918ad987&mpshare=1&scene=1&srcid=0706TNjLrlJc1oaqvspF1Car&key=0b0fcc6d62e4018dcc65d8c90b0720f80a3622635f5d70f9402c1c262da095b16dda2ea4b981bab19a1048deb5f8ef86873120975254ecebee154d5b3a2becdcdf00d074c5299653ace99eafa11490b9&ascene=0&uin=MTA2MjU5MDI2MA%3D%3D&devicetype=iMac15%2C1+OSX+OSX+10.12.5+build(16F73)&version=12020810&nettype=WIFI&fontScale=100&pass_ticket=w2xsX%2FdCRMKmyFt6Tl8%2BsPtR53hL1Y3CO9YlVeJrrZ8B5exnWbJrmduG6FVqMng2