Swift 实施| |=和&&;=运算符:不匹配运算符声明的运算符实现
我想要“赋值或”和“赋值和”运算符。根据,这些运算符在标准库中定义 我尝试为Swift 实施| |=和&&;=运算符:不匹配运算符声明的运算符实现,swift,Swift,我想要“赋值或”和“赋值和”运算符。根据,这些运算符在标准库中定义 我尝试为Bool值实现这些运算符: func ||= (inout lhs: Bool, rhs: Bool) { lhs = lhs || rhs } func &&= (inout lhs: Bool, rhs: Bool) { lhs = lhs && rhs } 但是编译器抱怨:运算符实现没有匹配的运算符声明 这可以通过定义运算符来解决: infix operator ||=
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 }
但我不确定这样做是否正确。为什么标准库中的定义不起作用?另外,我注意到,根据操作符参考标准库,对于任何类型,都没有这些操作符的实现。为什么呢?这是疏忽还是故意的?关于操作员的文件已经过时,这已在之前的评论中指出;我引用用户空速: 是的,选中了,它(编辑注:指操作员
&&=
)仅为
在早期版本中曾定义为运算符,但从未
实际上是在任何函数中实现的,然后在以后完全删除。
医生错了
通过在中单击Cmd
,您可以很容易地看到哪些运算符实际上是本机定义的
import Swift
例如在操场上
或者,查看策略的源代码中的标准运算符部分。swift
:
&&=
和|124;=
都不是本机定义的
如果您对这些运营商的实施方式感兴趣(回到Swift 1.1中),以下帖子可能会引起您的兴趣: