返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Swift重构自定义空等运算符“??=”实例
  • 306
分享到

Swift重构自定义空等运算符“??=”实例

Swift重构自定义空等运算符Swift空等运算符“??=” 2023-03-13 14:03:35 306人浏览 八月长安
摘要

目录一、思路来源二、示例三、源码四、总结一、思路来源 最近在做 Flutter 开发时发现一个之前没注意到的空等运算符 “??=”,代表左边为空时,才会把右

一、思路来源

最近在做 Flutter 开发时发现一个之前没注意到的空等运算符 “??=”,代表左边为空时,才会把右边的值赋给左边,然后返回左边的变量值;常用于避免多次赋值的情况;发现非常实用,于是给 swift 也自定义一个使用,最终如下;

二、示例

b1 获取 a1 的值,a1 如果不为空直接返回;为空则赋值;

var a1: UIView?;
let b1 = a1 ??= UITableView();
print("a1: \(a1)");//a1: Optional(<UITableView: 0x7feda0830600;
print("b1: \(b1)");//b1: <UITableView: 0x7feda0830600

等同于:

var a1: UIView?;
if(a1 == nil) {
    a1 = UITableView();
}
let b1 = a1;

可以让我们少写一行代码;

三、源码

precedencegroup NilEqualPrecedence {
  /// 优先从左向右, left, right or none
  associativity: left
  higherThan: AssignmentPrecedence//优先级,比等号运算符高
  // lowerThan: AdditionPrecedence // 优先级, 比...低
  assignment: true // 是否是赋值运算
}
/// 空等运算符声明
infix operator ??=: NilEqualPrecedence
/// 空等运算符实现
func ??= <T>(lhs: inout T?, rhs: T) -> T {
    if lhs == nil {
        lhs = rhs;
    }
    return lhs!;
 }

四、总结

Swift 最令人兴奋的特性之一(尽管也有争议)是自定义运算符的能力。

在您自己的代码中重写或定义新运算符时,请确保遵循以下准则:

  • 不要创建运算符,除非它的含义是显而易见且无可争议的。查找任何潜在的冲突以确保语义一致性。
  • 注意自定义算子的优先级和关联性,只根据需要定义新的算子组。
  • 如果有意义,请考虑为自定义运算符实现分配变体。

编程工作的核心是创造。创造一切我们需要而没有的函数、工具、脚本...

以上就是Swift重构自定义空等运算符 “??=” 实例的详细内容,更多关于Swift重构自定义空等运算符的资料请关注编程网其它相关文章!

--结束END--

本文标题: Swift重构自定义空等运算符“??=”实例

本文链接: https://lsjlt.com/news/199594.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Swift重构自定义空等运算符“??=”实例
    目录一、思路来源二、示例三、源码四、总结一、思路来源 最近在做 Flutter 开发时发现一个之前没注意到的空等运算符 “??=”,代表左边为空时,才会把右...
    99+
    2023-03-13
    Swift重构自定义空等运算符 Swift 空等运算符 “??=”
  • Swift如何重构自定义空等运算符
    今天小编给大家分享一下Swift如何重构自定义空等运算符的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、思路来源最近在做 ...
    99+
    2023-07-05
  • Swift 重构重载运算符示例解析
    目录一、思路来源二、基础类型 String 为例重载乘法运算符源码实现:三、对象类型 UIEdgeInsets 为例重载加法运算符将源码实现:四、总结一、思路来源 研究自定义运算符...
    99+
    2023-03-13
    Swift 重构重载运算符 Swift  重构重载
  • Swift如何重构重载运算符
    今天小编给大家分享一下Swift如何重构重载运算符的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。基础类型 String 为例...
    99+
    2023-07-05
  • C#重载运算符怎么定义
    本文小编为大家详细介绍“C#重载运算符怎么定义”,内容详细,步骤清晰,细节处理妥当,希望这篇“C#重载运算符怎么定义”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。C# 运算符重载您可以重定义或重载 C#...
    99+
    2023-06-17
  • Swift代码自定义UIView实现示例
    Swift自定义View和OC自定义View的原理都是一样的,重写init()方法或initWithFrame()方法,下面简单说说如何自定义swift UIView 主要是重写in...
    99+
    2024-04-02
  • Python3实现自定义比较排序/运算符
    目录自定义比较排序/运算符1.cmp函数2.重写类方法Python3实现各种排序方法自定义比较排序/运算符 Python3和Python2相比有挺多变化。 在Python2中可以直接...
    99+
    2024-04-02
  • C++11运算符重载和向量类重载实例详解(<<,>>,+,-,*等)
    目录1. C++运算符重载介绍1.1 单目运算符与双目运算符1.2 友元运算符2. 实例讲解2.1 头文件定义2.2 实现运算符重载总结1. C++运算符重载介绍 C ++ 中预定义...
    99+
    2024-04-02
  • Python运算符重载实例分析
    这篇文章主要讲解了“Python运算符重载实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python运算符重载实例分析”吧!一、运算符重载(一)概述运算符重载是通过实现特定的方法使类...
    99+
    2023-06-29
  • C++构造函数+复制构造函数+重载等号运算符调用
    目录前言:1、赋值和初始化的区别2、初始化和赋值分别调用哪个函数?3、编写测试类前言: 初学C++发现了下面这个问题,其中Duck是一个已知的类,并以多种方式指定对象的值: Duck...
    99+
    2024-04-02
  • C#运算符重载的实例介绍
    本篇内容介绍了“C#运算符重载的实例介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#运算符重载实例是掌握C#运算符重载的有效方法,那么...
    99+
    2023-06-18
  • C++重载运算符是实例分析
    本篇内容介绍了“C++重载运算符是实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!运算符实际上是一个函数,所以运算符的重载实际上是函数...
    99+
    2023-06-29
  • Android自定义View实现等级滑动条的实例
     Android自定义View实现等级滑动条的实例 实现效果图: 思路: 首先绘制直线,然后等分直线绘制点; 绘制点的时候把X值存到集合中。 然后绘制背...
    99+
    2022-06-06
    view Android
  • Python运算符重载详解及实例代码
    Python运算符重载 Python语言提供了运算符重载功能,增强了语言的灵活性,这一点与C++有点类似又有些不同。鉴于它的特殊性,今天就来讨论一下Python运算符重载。 Pyth...
    99+
    2022-06-04
    详解 运算符 实例
  • C语言运算符的重载实例分析
    本篇内容介绍了“C语言运算符的重载实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!写一个Add函数我们先讨论下面代码,并复习前面的内容...
    99+
    2023-06-26
  • Python运算符重载的简单实例代码
    目录什么是运算符重载以__pow__为例反向运算符的重载总结什么是运算符重载 让自定义的类生成的对象(实例)能够使用运算符进行操作 作用: 让自定义的实例像内建对象一样进行运算符操作...
    99+
    2024-04-02
  • C++构造函数,复制构造函数和重载等号运算符怎么调用
    本篇内容主要讲解“C++构造函数,复制构造函数和重载等号运算符怎么调用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++构造函数,复制构造函数和重载等号运算符怎么调用”吧!前言:初学C++发现...
    99+
    2023-06-29
  • python小例子-缩进式编码+算术运算符+定义与赋值
    目录一、​缩进式编码二、算术运算符三、定义与赋值 以Python 3.x版本为主 一、​缩进式编码 解释型:没有编译环节,直接运行执行代码显示效果 ​缩进式编码风格:​ 代...
    99+
    2024-04-02
  • 如何用Shell实现数学运算自定义函数
    本篇内容介绍了“如何用Shell实现数学运算自定义函数”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!最近脚本中总是需要计算,每次都用awk会...
    99+
    2023-06-09
  • Python运算符重载的实例代码怎么编写
    Python运算符重载的实例代码怎么编写,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。什么是运算符重载让自定义的类生成的对象(实例)能够使用运算符进行操作作用:让自定义的实例像...
    99+
    2023-06-26
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作