swift 运算符
使用自定义运算符创建清晰,简洁且有时很有趣的代码。
当我第一次遇到包含自定义运算符的 Swift代码时,我立即将它们视为高级语言功能中的另一项而忽略了,像我这样的普通修修补工永远都不需要。 但是,在我之前的文章中最终将它们用作非常基本的软件包示例之后 ,我决定,即使使用非标准运算符,它们不仅方便使用,还可以使您的代码更具可读性。
什么是运营商?
直接取自维基百科 :
(运算符是)构造,其行为通常类似于函数,但在语法或语义上与常规函数不同。
如果您已完成任何编程 ,则可以使用运算符。 您可能熟悉一些基本知识,例如+
, -
和&#61;<
。 所有语言对它们的运算符的定义都不同&#xff0c;某些语言&#xff08;例如Java和Javascript&#xff09;主要依赖于单独使用或组合使用的小符号集&#xff0c;而其他语言&#xff08;例如python&#xff09;则将英语单词用作其某些运算符&#xff0c;例如and
or
&#xff0c; is
和not
。
运营商类型
运营商通常分为几大类&#xff1a;
作业 - 赋值运算符用于为变量赋值。
算术 —算术运算符用于执行数学运算&#xff0c;例如加法&#xff0c;减法&#xff0c;乘法等。
比较 -比较运算符用于比较值。 它根据条件返回True
或False
。
逻辑 -逻辑运算符用于创建定义的布尔逻辑&#xff0c;即And
&#xff0c; Or
以及Not
。
按位 -按位运算符可对一个或多个位或二进制模式进行操作。
运算符语法
通常&#xff0c;运算符语法可以分为三种通用的运算符类型&#xff1a; prefix
&#xff0c; postfix
和infix
。
中缀
Swift和大多数其他编程范围通常都喜欢infix
运算符&#xff0c;因为它们是允许您使用多个操作数的运算符类型。 infix
运算符有时也称为二进制运算符&#xff0c;因为它们在两个目标上运行。 使用此想法&#xff0c; prefix
和postfix
也称为一元运算符。 Swift和其他几种语言也支持三元运算符。
字首
prefix
运算符放在其操作数之前&#xff0c;并且是一元运算符。
后缀
postfix
运算符放置在其操作数之后&#xff0c;并且是一元运算符。
创建自定义运算符
既然我已经简要定义了什么是运算符&#xff0c;那么我将演示如何在Swift和一些用例中定义自定义运算符。
声明自定义运算符
Apple 在这里描述了声明运算符&#xff0c;但是您可以参考此伪代码示例来简要了解所使用的语法。 使用operator
关键字及其关联的修饰符在全局级别上声明新的运算符。
要注意的一件事是&#xff0c;定义操作员名称的方式受到限制。 虽然我很想定义&#x1f32e;或&#x1f4a9;运算符&#xff0c;但Swift将您限制为已定义的unicode字符范围 。
字首
创建自定义prefix
运算符的一个用例是&#xff0c;如果您有一个通用操作&#xff0c;其中一个通用符号可能比每次使用都调用一个函数一样容易理解和简洁。 例如&#xff0c;找到数字的平方根或立方根。
后缀
postfix
运算符有很多很棒的用途&#xff0c;例如我在这里使用的--
和&#43;&#43;
。 但是&#xff0c;当我看到镰刀和锤子unicode在Swift中可用时。
中缀
如前所述&#xff0c;中infix
运算符往往是最常见的。 我整理了一些有趣的例子来利用它们。
这里要注意的一件事是在定义中infix
运算符时使用优先级组。
运算符优先级赋予某些运算符更高的优先级&#xff1b; 首先应用这些运算符。
运算符关联性定义了如何将具有相同优先级的运算符组合在一起-从左侧分组还是从右侧分组。 可以将其理解为“他们与他们左侧的表情相关联”或“他们与他们右侧的表情相关联”。
- 苹果
摘要
Swift决定包含自定义运算符&#xff0c;使您能够创建适合您需求的简洁易读的代码。 如果有人碰巧碰到您项目中的☭或⛹&#xff0c;他们也可以很有趣地向您的同伴编码者解释。 &#x1f609;
翻译自: https://hackernoon.com/creating-custom-operators-in-swift-2c8bababbaf6
swift 运算符