Swift3.0 - 对象判等

  • 实现步骤

1.对象遵守协议Equatable 2.实现协议的方法

a.第一种写法 在类内部实现

class A :Equatable{
   var name:String?
    static func ==(lhs: A, rhs: A) -> Bool{
        return lhs.name == rhs.name
    }
}

b.第二种写法 将实现方法写到全局去

class A :Equatable{
   var name:String?
}

func ==(lhs: A, rhs: A) -> Bool{
    return lhs.name == rhs.name
}

c.你也可以使用扩展方式去实现协议

extension A: Equatable {
static func ==(lhs: A, rhs: A) -> Bool{
        return lhs.name == rhs.name
    }
}

运行下面代码:

let classa = A()
classa.name = "酷走天涯"
let classb = A()
classb.name = "酷走天涯"
if classa == classb {
    print("==")
}

运行结果:

==

友情提示:

如果对象没有实现Equatable 协议方法,系统不允许使用 == 进行判断,这是swift的严谨性

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏玄魂工作室

CTF实战32 综合实战和讲解二

该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试,请勿用于其他非法用途,如用作其他非法用途与本文作者无关

8430
来自专栏小勇DW3

并发工具箱 concurrent包的原理分析以及使用

BlockingQueue 通常用于一个线程生产对象,而另外一个线程消费这些对象的场景。下图是对这个原理的阐述:

32130
来自专栏张泽旭的专栏

Netty5实现接收服务端返回数据

29920
来自专栏IT技术精选文摘

Java多线程知识小抄集(二)

27. ConcurrentHashMap ConcurrentHashMap是线程安全的HashMap,内部采用分段锁来实现,默认初始容量为16,装载因子为0...

20660
来自专栏LanceToBigData

Java多线程之细说线程池

前言   在认识线程池之前,我们需要使用线程就去创建一个线程,但是我们会发现有一个问题:    如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就...

54450
来自专栏Ryan Miao

java并发编程实战学习(3)--基础构建模块

转自:java并发编程实战 5.3阻塞队列和生产者-消费者模式 BlockingQueue阻塞队列提供可阻塞的put和take方法,以及支持定时的offer和p...

32070
来自专栏老马说编程

(81) 并发同步协作工具 / 计算机程序的思维逻辑

查看历史文章,请点击上方链接关注公众号。 我们在67节和68节实现了线程的一些基本协作机制,那是利用基本的wait/notify实现的,我们提到,Java并发包...

20590
来自专栏帘卷西风的专栏

关于lua扩展库lpack的使用指南

lpack的具体用法 1、打包接口pack的使用,全局名字容易混淆lua本身函数unpack,使用string.pack好些,也可以修改源码修改函数名。

18130
来自专栏Ryan Miao

java并发编程(4)--线程池的使用

转载:http://www.cnblogs.com/dolphin0520/p/3932921.html 一. java中的ThreadPoolExecutor...

36480
来自专栏编码小白

ofbiz实体引擎(三) GenericDelegator实例化的具体过程

/** * @author 郑小康 * 1.设置delegatorFullName 基本delegatorName+"#"+tenantId...

42950

扫码关注云+社区

领取腾讯云代金券