Swift 重構:重載運算符

語言: CN / TW / HK

一、思路來源

研究自定義運算符的時候,又重新看了一下重載運算符,覺得挺有意思的,隨手封裝了幾個。

二、基礎類型 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、編程的核心是創造力,你創造各種工具函數的能力越強則工作越輕鬆,反之亦然。