我想拥有“ assigning or”和“ assigning and”运算符。根据Swift标准库运算符参考,这些运算符在标准库中定义。
我尝试为这些Bool
值实现这些运算符:
func ||= (inout lhs: Bool, rhs: Bool) {
lhs = lhs || rhs
}
func &&= (inout lhs: Bool, rhs: Bool) {
lhs = lhs && rhs
}
但是编译器抱怨: operator implementation without matching operator declaration
这可以通过定义运算符来解决:
infix operator ||= { associativity right precedence 90 }
infix operator &&= { associativity right precedence 90 }
但是我不确定这是正确的做法。为什么标准库中的定义不起作用?另外,我注意到根据操作员参考标准库没有任何类型的这些操作员的实现。这是为什么?这是疏忽还是故意的?
有关运算符的文档已过时,该答案的注释已在前面进行了注明;我引用用户空速速度:
是的,检查它(编注:指经营者
&&=
)在早期版本中永远只能定义为运营商非常,实际上从未在任何功能实现的,再后来干脆删除。文件是错误的。
通过Cmd
单击Swift
,您可以轻松查看实际在本地定义的运算符
import Swift
在例如操场上。
或者,查看以下源代码中的“标准运算符”部分Policy.swift
:
在上述两者,这是显而易见的是,既不&&=
也不||=
是本地定义。
如果您对这些操作符的实现方式感兴趣(早在Swift 1.1中),那么以下文章可能会引起您的兴趣:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句