Swift 重构重载运算符示例解析

 更新时间:2023年03月13日 14:13:57   作者:SoaringHeart  
这篇文章主要为大家介绍了Swift 重构重载运算符示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

一、思路来源

研究自定义运算符的时候,又重新看了一下重载运算符,觉得挺有意思的,随手封装了几个。

二、基础类型 String 为例

重载乘法运算符

将一段字符串重复 n 次拼接在一起;

let c = "abc"*3;
print("c: \(c)");//c: abcabcabc

源码实现:

public extension String{
    static func * (lhs: String, rhs: Int) -> String {
        return String(repeating: lhs, count: rhs);
     }
}

三、对象类型 UIEdgeInsets 为例

重载加法运算符将

将 top, left, bottom, right 属性逐个求和;

let edg1 = UIEdgeInsets(top: 1, left: 2, bottom: 3, right: 4);
let edg2 = UIEdgeInsets(top: 4, left: 3, bottom: 2, right: 1);
let e = edg1 + edg2;

print("edg1: \(edg1)");//edg1: UIEdgeInsets(top: 1.0, left: 2.0, bottom: 3.0, right: 4.0)
print("edg2: \(edg2)");//edg2: UIEdgeInsets(top: 4.0, left: 3.0, bottom: 2.0, right: 1.0)
print("e: \(e)");//e: UIEdgeInsets(top: 5.0, left: 5.0, bottom: 5.0, right: 5.0)

源码实现:

public extension UIEdgeInsets{

    static func + (lhs: UIEdgeInsets, rhs: UIEdgeInsets) -> UIEdgeInsets {
        return UIEdgeInsets(lhs.top + rhs.top,
                            lhs.left + rhs.left,
                            lhs.bottom + rhs.bottom,
                            lhs.right + rhs.right
        );
     }
}

四、总结

1、重载运算符可以将繁琐的操作简单化,复杂的操作封装化,属于质变的重构方式;

2、编程的核心是创造力,你创造各种工具函数的能力越强则工作越轻松,反之亦然。

以上就是Swift 重构重载运算符示例解析的详细内容,更多关于Swift 重构重载运算符的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Swift中的数据类型类型转换

    详解Swift中的数据类型类型转换

    Swift中的类型转换可以结合类的继承等面向对象的编程特性来进行,本文中我们就来详解Swift中的数据类型类型转换,需要的朋友可以参考下
    2016-07-07
  • switch多选择结构、循环结构示例详解

    switch多选择结构、循环结构示例详解

    这篇文章主要介绍了switch多选择结构、循环结构,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • Swift读取App的版本信息与PCH文件详解

    Swift读取App的版本信息与PCH文件详解

    这篇文章主要介绍了Swift读取App的版本信息与PCH文件的相关资料,文中通过图文介绍的非常详细,对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • Swift教程之下标详解

    Swift教程之下标详解

    这篇文章主要介绍了Swift教程之下标详解,本文讲解了下标语法、下标的使用、下标选项等内容,需要的朋友可以参考下
    2015-01-01
  • 深入解析Swift代理模式

    深入解析Swift代理模式

    委托(代理)是一种设计模式,它允许类或结构体将一些需要它们负责的功能交由(委托)给其他的类型。下面这篇文章主要介绍了Swift代理模式的相关资料,文章开始先介绍了Objective-C相关的内容,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-03-03
  • Swift中常量和变量的区别与声明详解

    Swift中常量和变量的区别与声明详解

    Swift语言同样和Java和OC等语言一样是同样是需要声明常量和变量的,下面就让我们来学习一下Swift的常量和变量。这篇文章主要给大家介绍了关于Swift中常量和变量的区别与声明的相关资料,需要的朋友可以参考下。
    2017-11-11
  • Swift使用WKWebView在iOS应用中调用Web的方法详解

    Swift使用WKWebView在iOS应用中调用Web的方法详解

    这篇文章主要介绍了Swift使用WKWebView在iOS应用中调用Web的方法详解,使用WKWebView便等于使用和Safari中相同的JavaScript解释器,用来替代过去的UIWebView,需要的朋友可以参考下
    2016-04-04
  • 浅谈Swift派发机制

    浅谈Swift派发机制

    派发目的是让 CPU 知道被调用的函数在哪里。Swift 语言是支持编译型语言的直接派发,函数表派发和消息机制派发三种派发方式的,下面分别对这三种派发方式说明下。
    2021-06-06
  • Swift用final关键字来防止重写

    Swift用final关键字来防止重写

    final关键字在大多数的编程语言中都存在,表示不允许对其修饰的内容进行继承或者重新操作。下面通过实例代码给大家介绍swift用final关键字来防止重写
    2016-12-12
  • 在SpringBoot中实现适配器模式的两种方式

    在SpringBoot中实现适配器模式的两种方式

    这篇文章主要介绍了在SpringBoot中实现适配器模式的两种方式,通过实现类定义类型字段实现和以动态service名称的方式实现,并且通过代码示例讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-03-03

最新评论