swift中關(guān)于??運(yùn)算符的探索

1.??運(yùn)算符是一個(gè)雙目運(yùn)算符,系統(tǒng)對(duì)這個(gè)運(yùn)算符的定義如下:

func ??(optional: T?, defaultValue: @autoclosure () -> T) -> T

我們自己可以手動(dòng)實(shí)現(xiàn)如下:

infix operator +?

func +?(op:T?,handler:@autoclosure()->T)->T{ ??

? ? ? guard let p = op else {? ? ? ??

? ? ? return handler(); ??

?} ? ?

infix operator -?

func -?(op:T?,handler:()->T)->T{

? ? ? ?guard let p = op else {

? ? ? ? return handler();

? ? }

? ? ? return p;

}

測(cè)試:

let str = "welcom";

let str1:String? = nil

let handler:(()->String) = {

()->String in

return "1111";

}

let s = str +? "yyyy"

let s1 = str -? handler

let s2 = str1 +? "yyyy"

let s3 = str1 -? handler

print((s,s1,s2,s3));

結(jié)果如下:("welcom", "welcom", "yyyy", "1111")

系統(tǒng)的??雙目運(yùn)算符采用了自動(dòng)閉包,通過我對(duì)+?,-?運(yùn)算符的重載,可以看出。

第一次寫,寫的不好望見諒

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile麗語閱讀 4,096評(píng)論 0 6
  • 操作符 操作符優(yōu)先級(jí) 在像 1 + 2 * 3 這樣的表達(dá)式中, 2 * 3 被首先計(jì)算, 因?yàn)橹芯Y操作符 * ...
    焉知非魚閱讀 1,595評(píng)論 0 1
  • import Foundation print("1","2","3","4"); //輸出多個(gè)字符串,并用“**...
    風(fēng)的低語閱讀 521評(píng)論 0 0
  • 1、范型范型所解決的問題 函數(shù)、方法、類型:類,結(jié)構(gòu)體,枚舉,元組類型,協(xié)議參數(shù),返回值,成員函數(shù)參數(shù),成員屬性類...
    我是小胡胡123閱讀 942評(píng)論 0 1
  • Swift2.0 1.defer譯為延緩、推遲之意類似棧 注意作用域,其次是調(diào)用順序——即一個(gè)作用域結(jié)束(注意),...
    zeqinjie閱讀 3,512評(píng)論 0 50

友情鏈接更多精彩內(nèi)容