欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Swift重構自定義空等運算符 “??=” 實例

 更新時間:2023年03月13日 14:22:31   作者:SoaringHeart  
這篇文章主要為大家介紹了Swift重構自定義空等運算符 “??=” 實例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

一、思路來源

最近在做 Flutter 開發(fā)時發(fā)現(xiàn)一個之前沒注意到的空等運算符 “??=”,代表左邊為空時,才會把右邊的值賦給左邊,然后返回左邊的變量值;常用于避免多次賦值的情況;發(fā)現(xiàn)非常實用,于是給 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 {
  /// 優(yōu)先從左向右, left, right or none
  associativity: left
  higherThan: AssignmentPrecedence//優(yōu)先級,比等號運算符高
  // lowerThan: AdditionPrecedence // 優(yōu)先級, 比...低
  assignment: true // 是否是賦值運算
}
/// 空等運算符聲明
infix operator ??=: NilEqualPrecedence
/// 空等運算符實現(xiàn)
func ??= <T>(lhs: inout T?, rhs: T) -> T {
    if lhs == nil {
        lhs = rhs;
    }
    return lhs!;
 }

四、總結

Swift 最令人興奮的特性之一(盡管也有爭議)是自定義運算符的能力。

在您自己的代碼中重寫或定義新運算符時,請確保遵循以下準則:

  • 不要創(chuàng)建運算符,除非它的含義是顯而易見且無可爭議的。查找任何潛在的沖突以確保語義一致性。
  • 注意自定義算子的優(yōu)先級和關聯(lián)性,只根據(jù)需要定義新的算子組。
  • 如果有意義,請考慮為自定義運算符實現(xiàn)分配變體。

編程工作的核心是創(chuàng)造。創(chuàng)造一切我們需要而沒有的函數(shù)、工具、腳本...

以上就是Swift重構自定義空等運算符 “??=” 實例的詳細內容,更多關于Swift重構自定義空等運算符的資料請關注腳本之家其它相關文章!

相關文章

  • 淺談swift 4.0中private所發(fā)生的變化

    淺談swift 4.0中private所發(fā)生的變化

    Swift 4是蘋果計劃于2017年秋季推出的最新版本,其主要重點是提供與Swift 3代碼的源兼容性,并努力實現(xiàn)ABI穩(wěn)定性。下面這篇文章主要給大家介紹了關于swift 4.0中private所發(fā)生的一些變化,需要的朋友可以參考下。
    2017-12-12
  • Swift超詳細講解指針

    Swift超詳細講解指針

    從傳統(tǒng)的C代碼和與之無縫配合的Objective-C代碼遷移到Swift并非小工程,我們的代碼庫肯定會時不時出現(xiàn)一些和C協(xié)作的地方,如果想要繼續(xù)使用那些C?API的話,了解一些基本的Swift指針操作和使用的知識會很有幫助。下面通過這篇文章一起來學習下吧。
    2022-08-08
  • Swift開發(fā)之UITableView狀態(tài)切換效果

    Swift開發(fā)之UITableView狀態(tài)切換效果

    這篇文章主要介紹了Swift開發(fā)之UITableView狀態(tài)切換效果的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-08-08
  • Swift實現(xiàn)文件壓縮和解壓示例代碼

    Swift實現(xiàn)文件壓縮和解壓示例代碼

    本篇文章主要介紹了Swift實現(xiàn)文件壓縮和解壓示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Swift中通過疊加UILabel實現(xiàn)混合進度條的方法

    Swift中通過疊加UILabel實現(xiàn)混合進度條的方法

    這篇文章主要介紹了Swift中通過疊加UILabel實現(xiàn)混合進度條的方法的相關資料,需要的朋友可以參考下
    2016-08-08
  • Swift 3中使用FMDB遇到的問題與解決方法

    Swift 3中使用FMDB遇到的問題與解決方法

    相信大家都熟悉OC使用FMDB第三方庫,進行數(shù)據(jù)庫操作,增、刪、改、查,但最近在Swift 3中使用FMDB遇到了一些問題,下面這篇文章主要給大家介紹了關于在Swift 3中使用FMDB遇到的問題與解決方法,需要的朋友可以參考下。
    2017-07-07
  • 解析Swift中的泛型支持與使用

    解析Swift中的泛型支持與使用

    支持泛型意味著可以在規(guī)定參數(shù)類型的情況下更靈活地編寫程序,也是Swift語言先進而又強大的體現(xiàn),這里我們就來解析Swift中的泛型支持與使用:
    2016-07-07
  • Swift循環(huán)遍歷集合的方法總結分享

    Swift循環(huán)遍歷集合的方法總結分享

    SWIFT是蘋果于2014年WWDC發(fā)布的新開發(fā)語言,可與Objective-C*共同運行于Mac OS和iOS平臺,用于搭建基于蘋果平臺的應用程序。這篇文章主要給大家總結介紹了關于Swift循環(huán)遍歷集合的方法,如for-in循環(huán)、for循環(huán)以及基于塊的遍歷等方法,需要的朋友可以參考下。
    2017-03-03
  • 探討Swift數(shù)組和字典

    探討Swift數(shù)組和字典

    Swift數(shù)組是具體的。他不同于Objective-C的的NSArray和NSMutableArray里的類,它可以存儲任何類型的對象,不提供有關它們返回的對象的性質的任何信息
    2015-12-12
  • RxSwift學習之Observable的新建、訂閱及取消訂閱

    RxSwift學習之Observable的新建、訂閱及取消訂閱

    這篇文章主要給大家介紹了關于RxSwift學習教程之Observable的相關資料,文中詳細的給大家介紹了關于新建Observable、訂閱Observable和取消訂閱并消除內存泄漏等相關的內容,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-09-09

最新評論