12、编程语言特性:Swift 协议、Scala 模式匹配与并发编程

编程语言特性:Swift 协议、Scala 模式匹配与并发编程

1. Swift 协议的特点与问题

Swift 协议允许在任何时候为任何给定类型定义和实现协议。然而,协议的实现是在类或结构体内部定义的,这会导致类或结构体全局改变。

例如,假设有两个不同的 JSON 协议:

protocol JSONA {
    func toJSON(precision: Integer) -> String
}
protocol JSONB {
    func toJSON(scale: Integer) -> String
}

如果这两个协议对于精度参数的处理规范不同,那么一个类或结构体只能实现其中一个协议。因为实现任何一个协议都意味着向类或结构体添加一个 toJSON(Integer) 方法,而每个类或结构体只能有一个这样的方法。

2. Elixir 协议的优势

Elixir 协议受 Clojure 协议的影响很大,协议的实现与协议本身相关,而不是与实现协议的数据类型相关。这意味着可以为相同的数据类型实现多个协议,且不会发生冲突。

defprotocol JSONA do
    def to_json(data, precision)
end
defprotocol JSONB do
    def to_json(data, scale)
end
defimpl JSONA, for: Integer do
    de
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值