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

Swift重構(gòu)自定義空等運(yùn)算符 “??=” 實(shí)例

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

一、思路來(lái)源

最近在做 Flutter 開(kāi)發(fā)時(shí)發(fā)現(xiàn)一個(gè)之前沒(méi)注意到的空等運(yùn)算符 “??=”,代表左邊為空時(shí),才會(huì)把右邊的值賦給左邊,然后返回左邊的變量值;常用于避免多次賦值的情況;發(fā)現(xiàn)非常實(shí)用,于是給 swift 也自定義一個(gè)使用,最終如下;

二、示例

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)先級(jí),比等號(hào)運(yùn)算符高
  // lowerThan: AdditionPrecedence // 優(yōu)先級(jí), 比...低
  assignment: true // 是否是賦值運(yùn)算
}
/// 空等運(yùn)算符聲明
infix operator ??=: NilEqualPrecedence
/// 空等運(yùn)算符實(shí)現(xiàn)
func ??= <T>(lhs: inout T?, rhs: T) -> T {
    if lhs == nil {
        lhs = rhs;
    }
    return lhs!;
 }

四、總結(jié)

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

在您自己的代碼中重寫或定義新運(yùn)算符時(shí),請(qǐng)確保遵循以下準(zhǔn)則:

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

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

以上就是Swift重構(gòu)自定義空等運(yùn)算符 “??=” 實(shí)例的詳細(xì)內(nèi)容,更多關(guān)于Swift重構(gòu)自定義空等運(yùn)算符的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

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

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

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

    Swift編程中數(shù)組的使用方法指南

    這篇文章主要介紹了Swift編程中數(shù)組的使用方法指南,是Swift入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-11-11
  • Swift實(shí)現(xiàn)多個(gè)TableView側(cè)滑與切換效果

    Swift實(shí)現(xiàn)多個(gè)TableView側(cè)滑與切換效果

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

    RxSwift學(xué)習(xí)之Observable的新建、訂閱及取消訂閱

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

    簡(jiǎn)單分析Swift語(yǔ)言的一些基本特征

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

    分享十條實(shí)用的Swift小提示

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

    Swift縮放并填充圖片功能的實(shí)現(xiàn)

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

    swift實(shí)現(xiàn)自定義圓環(huán)進(jìn)度提示效果

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

    swift3.0鍵盤彈起遮擋輸入框問(wèn)題的解決方案

    這篇文章主要介紹了swift3.0鍵盤彈起遮擋輸入框問(wèn)題的解決方案,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-11-11
  • Swift實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

    Swift實(shí)現(xiàn)簡(jiǎn)單計(jì)算器

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

最新評(píng)論

松阳县| 新兴县| 宁明县| 奈曼旗| 洛浦县| 三都| 吉林省| 白银市| 六安市| 闸北区| 库伦旗| 西城区| 柞水县| 当雄县| 肥城市| 永清县| 仁寿县| 绥棱县| 聂拉木县| 鄂伦春自治旗| 方城县| 法库县| 安康市| 扬州市| 江城| 乐昌市| 宜兰市| 攀枝花市| 安庆市| 新营市| 临朐县| 贞丰县| 云梦县| 新竹县| 博爱县| 绥江县| 巨野县| 焦作市| 雅安市| 聂拉木县| 永和县|