首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合使用自定义运算符

组合使用自定义运算符
EN

Stack Overflow用户
提问于 2015-01-31 13:26:17
回答 1查看 40关注 0票数 0

让我们假设我已经定义了一个前缀操作符*,并定义了一个与它关联的函数:

代码语言:javascript
复制
prefix operator * { }
prefix func * (value: Int) -> Bool {
    return value == 5
}

函数返回一个Bool,所以要做的一件事就是用!前缀操作符否定它。

但是,在尝试这样做时,必须使用括号:

代码语言:javascript
复制
let myBool = !(*5)

有没有一种将操作符放在一起的方法:!*5

而不定义新的运算符:prefix operator !* { }

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-31 13:49:47

我想说这是不可能的。编译器将这两个操作符的组合看作是一个不能识别的操作符。

甚至不可能在not运算符和它的操作数之间添加一个空格,因为一元运算符必须“附加”。因此,剩下的两个选项是您想要避免的:

  1. 使用括号
  2. 定义一个新的!*运算符

注意,即使编译器能够将它们解析为两个不同的操作符,它也有可能无法工作。实际上,避免使用糖分语法并使用运算符作为正常函数,这是可行的:

代码语言:javascript
复制
let bool = (*)(5)
let not = (!)(bool)

但这并不是:

代码语言:javascript
复制
(!)(*)(5)

然而,使优先权显式地发挥作用:

代码语言:javascript
复制
(!)((*)(5))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28252097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档