热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

swift运算符_在Swift中创建自定义运算符

swift运算符使用自定义运算符创建清晰,简洁且有时很有趣的代码。当我第一次遇到包含自定义运算符的Swift代码时,我立即将它们视为高级语言功能中的另一

swift 运算符

使用自定义运算符创建清晰,简洁且有时很有趣的代码。

当我第一次遇到包含自定义运算符的 Swift代码时,我立即将它们视为高级语言功能中的另一项而忽略了,像我这样的普通修修补工永远都不需要。 但是,在我之前的文章中最终将它们用作非常基本的软件包示例之后 ,我决定,即使使用非标准运算符,它们不仅方便使用,还可以使您的代码更具可读性。

什么是运营商?

直接取自维基百科 :

(运算符是)构造,其行为通常类似于函数,但在语法或语义上与常规函数不同。

如果您已完成任何编程 &#xff0c;则可以使用运算符。 您可能熟悉一些基本知识&#xff0c;例如&#43; &#xff0c; -&#61;< 。 所有语言对它们的运算符的定义都不同&#xff0c;某些语言&#xff08;例如Java和Javascript&#xff09;主要依赖于单独使用或组合使用的小符号集&#xff0c;而其他语言&#xff08;例如python&#xff09;则将英语单词用作其某些运算符&#xff0c;例如and or &#xff0c; isnot

运营商类型

运营商通常分为几大类&#xff1a;

作业 - 赋值运算符用于为变量赋值。
算术 —算术运算符用于执行数学运算&#xff0c;例如加法&#xff0c;减法&#xff0c;乘法等。
比较 -比较运算符用于比较值。 它根据条件返回TrueFalse
逻辑 -逻辑运算符用于创建定义的布尔逻辑&#xff0c;即And &#xff0c; Or以及Not
按位 -按位运算符可对一个或多个位或二进制模式进行操作。

运算符语法

通常&#xff0c;运算符语法可以分为三种通用的运算符类型&#xff1a; prefix &#xff0c; postfixinfix

中缀

Swift和大多数其他编程范围通常都喜欢infix运算符&#xff0c;因为它们是允许您使用多个操作数的运算符类型。 infix运算符有时也称为二进制运算符&#xff0c;因为它们在两个目标上运行。 使用此想法&#xff0c; prefixpostfix也称为一元运算符。 Swift和其他几种语言也支持三元运算符。

字首

prefix运算符放在其操作数之前&#xff0c;并且是一元运算符。

后缀

postfix运算符放置在其操作数之后&#xff0c;并且是一元运算符。

创建自定义运算符

既然我已经简要定义了什么是运算符&#xff0c;那么我将演示如何在Swift和一些用例中定义自定义运算符。

声明自定义运算符

Apple 在这里描述了声明运算符&#xff0c;但是您可以参考此伪代码示例来简要了解所使用的语法。 使用operator关键字及其关联的修饰符在全局级别上声明新的运算符。

Swift操作员声明

要注意的一件事是&#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 运算符



推荐阅读
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • Redis管理工具的安装与使用指南
    本文详细介绍了两款流行的Redis管理工具——Another Redis Desktop Manager 和 Redis Desktop Manager 的安装步骤及基本使用方法,旨在帮助用户更高效地管理和操作Redis数据库。 ... [详细]
  • Hadoop集群搭建:实现SSH无密码登录
    本文介绍了如何在CentOS 7 64位操作系统环境下配置Hadoop集群中的SSH无密码登录,包括环境准备、用户创建、密钥生成及配置等步骤。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • 本文探讨了在不同场景下如何高效且安全地存储Token,包括使用定时器刷新、数据库存储等方法,并针对个人开发者与第三方服务平台的不同需求提供了具体建议。 ... [详细]
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • Web开发实践:创建连连看小游戏
    本文详细介绍了如何在Web环境中开发一款连连看小游戏,适合初学者和技术爱好者参考。通过本文,您将了解游戏的基本结构、连线算法以及实现方法。 ... [详细]
  • 使用 Babylon.js 实现地球模型与切片地图交互(第三部分)
    本文继续探讨在上一章节中构建的地球模型基础上,如何通过自定义的 `CameraEarthWheelControl` 类来实现更精细的地图缩放控制。我们将深入解析该类的实现细节,并展示其在实际项目中的应用。 ... [详细]
  • 使用jQuery与百度地图API实现地址转经纬度功能
    本文详细介绍了如何利用jQuery和百度地图API将地址转换为经纬度,包括申请API密钥、页面构建及核心代码实现。 ... [详细]
  • 本文探讨了在Eclipse中进行JavaScript验证时遇到的时间过长问题,并提供了解决方法。特别是对于使用ExtJS框架的用户,这一问题尤为突出。文章详细介绍了如何通过修改项目配置文件来有效解决这一问题。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • HDU 2537 键盘输入处理
    题目描述了一个名叫Pirates的男孩想要开发一款键盘输入软件,遇到了大小写字母判断的问题。本文提供了该问题的解决方案及实现方法。 ... [详细]
  • 个人博客:打开链接依赖倒置原则定义依赖倒置原则(DependenceInversionPrinciple,DIP)定义如下:Highlevelmo ... [详细]
  • Java高级工程师学习路径及面试准备指南
    本文基于一位朋友的PDF面试经验整理,涵盖了Java高级工程师所需掌握的核心知识点,包括数据结构与算法、计算机网络、数据库、操作系统等多个方面,并提供了详细的参考资料和学习建议。 ... [详细]
author-avatar
剪子61_199
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有