查看: 69|回复: 0

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

[复制链接]

5

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2008-8-17
发表于 2023-3-13 14:13:57 | 显示全部楼层 |阅读模式

一、思路来源

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

二、基础类型 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重构自定义空等运算符 “??=” 实例
  • iOS Swift逻辑运算符示例总结
  • swift中自定义正则表达式运算符=~详解
  • Swift心得笔记之运算符
  • Swift之运算符重载示例详解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部