You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift类型一致性声明中波浪号(~)的含义是什么?

Swift类型一致性声明中波浪号(~)的含义是什么?

嗨,这个问题问得特别好!你看到的~Copyable其实是Swift 5.9及以后版本引入的否定型协议约束,专门用来表示类型不遵循某个协议。

咱们结合你给出的代码片段具体说:

  • 对于enum Optional<Wrapped> where Wrapped : ~Copyable,这句的意思是Optional的泛型参数Wrapped必须是不遵循Copyable协议的类型
  • 而protocol ExpressibleByNilLiteral : ~Copyable,则表示所有遵循ExpressibleByNilLiteral协议的类型,本身必须不遵循Copyable协议

这个语法是Swift为了更好地支持非可拷贝类型(就是那些只能移动、不能被复制的类型)而新增的特性——在此之前,Swift的泛型约束只能表达“必须遵循某协议”,没法直接声明“必须不遵循某协议”的反向约束,这个语法刚好填补了这个空白。

你说在Swift官方书籍和语法摘要里找不到相关说明,这其实很正常,因为这个特性相对较新,官方的核心文档可能还没来得及同步更新到这些板块里。

另外你提到的~的其他用法,比如对数字的按位取反、~=模式匹配运算符,和这个类型约束里的~是完全独立的语法,只是恰好复用了同一个符号而已。

备注:内容来源于stack exchange,提问作者HangarRash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 08:49:33