最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

一、思路來源

最近在做 Flutter 開發(fā)時發(fā)現一個之前沒注意到的空等運算符 “??=”,代表左邊為空時,才會把右邊的值賦給左邊,然后返回左邊的變量值;常用于避免多次賦值的情況;發(fā)現非常實用,于是給 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
/// 空等運算符實現
func ??= <T>(lhs: inout T?, rhs: T) -> T {
    if lhs == nil {
        lhs = rhs;
    }
    return lhs!;
 }

四、總結

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

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

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

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

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

相關文章

  • 詳解Swift編程中的方法與屬性的概念

    詳解Swift編程中的方法與屬性的概念

    這篇文章主要介紹了Swift編程中的方法與屬性的概念,是Swift入門學習中的基礎知識,需要的朋友可以參考下
    2015-11-11
  • Swift編程中數組的使用方法指南

    Swift編程中數組的使用方法指南

    這篇文章主要介紹了Swift編程中數組的使用方法指南,是Swift入門學習中的基礎知識,需要的朋友可以參考下
    2015-11-11
  • Swift實現多個TableView側滑與切換效果

    Swift實現多個TableView側滑與切換效果

    這篇文章主要為大家詳細介紹了Swift實現多個TableView側滑與切換效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • RxSwift學習之Observable的新建、訂閱及取消訂閱

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

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

    簡單分析Swift語言的一些基本特征

    這篇文章主要介紹了Swift語言的一些基本特征,本文從各語言最基礎的類與對象等方面來講,需要的朋友可以參考下
    2015-07-07
  • 分享十條實用的Swift小提示

    分享十條實用的Swift小提示

    是時候使用易入手又全面的Swif語言為iOS和mac OS X做應用開發(fā)了,下面這篇文章主要給大家分享介紹了十條實用的Swift小提示的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧
    2018-06-06
  • Swift縮放并填充圖片功能的實現

    Swift縮放并填充圖片功能的實現

    最近有一個需求,就是將圖片先等比例縮放到指定大小,然后將空余出來空間填充為黑色,返回指定大小的圖片。本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-11-11
  • swift實現自定義圓環(huán)進度提示效果

    swift實現自定義圓環(huán)進度提示效果

    這篇文章主要為大家詳細介紹了swift實現自定義圓環(huán)進度提示效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • swift3.0鍵盤彈起遮擋輸入框問題的解決方案

    swift3.0鍵盤彈起遮擋輸入框問題的解決方案

    這篇文章主要介紹了swift3.0鍵盤彈起遮擋輸入框問題的解決方案,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • Swift實現簡單計算器

    Swift實現簡單計算器

    這篇文章主要為大家詳細介紹了Swift實現簡單計算器,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01

最新評論

滕州市| 彭泽县| 贵港市| 绩溪县| 柘荣县| 开鲁县| 鹤庆县| 扶风县| 晋宁县| 崇信县| 铜陵市| 云阳县| 高台县| 大悟县| 贵定县| 时尚| 库尔勒市| 南雄市| 新龙县| 灯塔市| 阜新市| 蕉岭县| 清苑县| 开原市| 四川省| 灯塔市| 凯里市| 灵山县| 曲周县| 开江县| 浦江县| 奈曼旗| 利辛县| 武安市| 澳门| 临安市| 东兰县| 泰安市| 高要市| 平武县| 嘉定区|