加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

swift – 实现|| =和\u0026\u0026 =运算符:不匹配运算

发布时间:2020-12-14 04:37:24 所属栏目:百科 来源:网络整理
导读:我想要“分配或”和“分配和”操作符.根据 Swift Standard Library Operators Reference,这些运算符在标准库中定义. 我试图为Bool值实现这些运算符: func ||= (inout lhs: Bool,rhs: Bool) { lhs = lhs || rhs}func = (inout lhs: Bool,rhs: Bool) { lhs =
我想要“分配或”和“分配和”操作符.根据 Swift Standard Library Operators Reference,这些运算符在标准库中定义.

我试图为Bool值实现这些运算符:

func ||= (inout lhs: Bool,rhs: Bool) {
  lhs = lhs || rhs
}

func &&= (inout lhs: Bool,rhs: Bool) {
  lhs = lhs && rhs
}

但编译器抱怨:运算符实现没有匹配运算符声明

这可以通过定义运算符来修复:

infix operator ||= { associativity right precedence 90 }

infix operator &&= { associativity right precedence 90 }

但我不确定这是正确的做法.为什么标准库中的定义不起作用?另外,我注意到根据操作符参考标准库,没有针对任何类型的这些运算符的实现.这是为什么?这是疏忽还是故意的?

解决方法

有关操作符的文件已经过时,之前在 this answer的评论中已经提到过;我引用用户Airspeed Velocity:

Yup,checked and it (ed. note: referring to operator &&=) was only
ever defined as an operator in very in early versions,and never
actually implemented in any function,then removed altogether later.
Docs are wrong.

您可以通过Cmd单击Swift来轻松查看实际定义的运算符

import Swift

在例如一个操场.

或者,查看Policy.swift源代码中的标准运算符部分:

> swift/stdlib/public/core/Policy.swift

在上述两个中,很明显,&& =和|| =都不是本地定义的.

如果您对这些运算符的实现方式感兴趣(回到Swift 1.1),可能会对以下帖子感兴趣:

> Implementing Ruby’s ||= operator in Swift using @autoclosure

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读