學(xué)習(xí)Swift - 自定義運(yùn)算符

自定義運(yùn)算符僅能包含這些字符:
<pre>
/ = - + * % < >企孩!& | ^责静。~
</pre>

運(yùn)算符位置:
<pre>
前置運(yùn)算符 prefix
中間運(yùn)算符 infix
后置運(yùn)算符 postfix
</pre>

運(yùn)算符其他配置
<pre>
結(jié)合性 associativity
可取值范圍 left哑舒,right和none

優(yōu)先級 precedence
可取值范圍 0~255
</pre>
系統(tǒng)內(nèi)置運(yùn)算符結(jié)合性質(zhì)及優(yōu)先級

求冪相關(guān)(無結(jié)合,優(yōu)先級160)

<pre>
<< 按位左移(Bitwise left shift)

按位右移(Bitwise right shift)
</pre>
乘除法相關(guān)(左結(jié)合,優(yōu)先級150)
<pre>
* 乘
/ 除
% 求余
&* 乘法口锭,忽略溢出( Multiply, ignoring overflow)
&/ 除法曲楚,忽略溢出(Divide, ignoring overflow)
&% 求余, 忽略溢出( Remainder, ignoring overflow)
& 位與( Bitwise AND)
</pre>
加減法相關(guān)(左結(jié)合, 優(yōu)先級140)
<pre>


  • &+ Add with overflow
    &- Subtract with overflow
    | 按位或(Bitwise OR )
    ^ 按位異或(Bitwise XOR)
    </pre>
    Range (無結(jié)合,優(yōu)先級 135)
    <pre>
    .. 半閉值域 Half-closed range
    ... 全閉值域 Closed range
    </pre>
    類型轉(zhuǎn)換 (無結(jié)合,優(yōu)先級 132)
    <pre>
    is 類型檢查( type check)
    as 類型轉(zhuǎn)換( type cast)
    <= 小于等于

大于
= 大于等于
== 等于
!= 不等
=== 恒等于
!== 不恒等
~= 模式匹配( Pattern match)
</pre>
合壤逋佟( Conjunctive) (左結(jié)合,優(yōu)先級 120)
<pre>
&& 邏輯與(Logical AND)
</pre>
析取(Disjunctive) (左結(jié)合,優(yōu)先級 110)
<pre>
|| 邏輯或( Logical OR)
</pre>
三元條件(Ternary Conditional )(右結(jié)合,優(yōu)先級 100)
<pre>
?: 三元條件 Ternary conditional
</pre>
賦值 (Assignment) (右結(jié)合, 優(yōu)先級 90)
<pre>
= 賦值(Assign)
*= Multiply and assign
/= Divide and assign
%= Remainder and assign
+= Add and assign
-= Subtract and assign
<<= Left bit shift and assign
= Right bit shift and assign
&= Bitwise AND and assign
^= Bitwise XOR and assign
|= Bitwise OR and assign
&&= Logical AND and assign
||= Logical OR and assign
</pre>

范例
<pre>
// 前置:返回2的n次方
prefix operator ^

prefix func ^ (vector: Double) -> Double {
return pow(2, vector)
}

println(^5) // 32.0

// 后置:返回2次方
postfix operator ^^

postfix func ^^ (vector: Int) -> Int {
return vector * vector
}

println(5^^) // 25

//中間:計(jì)算N的M次方龙誊,左結(jié)合抚垃,優(yōu)先級為255
precedencegroup OrGroup {
associativity: left
higherThan: AdditionPrecedence
lowerThan: MultiplicationPrecedence
}

infix operator ^^^ : OrGroup
func ^^^(left: Double, right: Double) -> Double {
return pow(left, right)
}

println(2 ^^^ 10 - 2 ^^^ 3) // 1024 - 8 = 1016
</pre>

<pre>
// Swift 3
func |||(left: @autoclosure @escaping () -> T, right: @autoclosure @escaping () -> T) -> (Bool) -> T {
return { condition in
if condition {
return left()
} else {
return right()
}
}
}

func ???(condition: @autoclosure @escaping () -> Bool, value: (Bool) -> T) -> T {
return value(condition())
}

let bTrue = true
let bFalse = false

bTrue ??? "true value" ||| "false value"
// 輸出 true value
bFalse ??? "true value" ||| "false value"
// 輸出 false value
</pre>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市趟大,隨后出現(xiàn)的幾起案子鹤树,更是在濱河造成了極大的恐慌,老刑警劉巖逊朽,帶你破解...
    沈念sama閱讀 212,718評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件罕伯,死亡現(xiàn)場離奇詭異,居然都是意外死亡叽讳,警方通過查閱死者的電腦和手機(jī)追他,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岛蚤,“玉大人邑狸,你說我怎么就攤上這事∶鹈溃” “怎么了推溃?”我有些...
    開封第一講書人閱讀 158,207評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長届腐。 經(jīng)常有香客問我铁坎,道長,這世上最難降的妖魔是什么犁苏? 我笑而不...
    開封第一講書人閱讀 56,755評論 1 284
  • 正文 為了忘掉前任硬萍,我火速辦了婚禮,結(jié)果婚禮上围详,老公的妹妹穿的比我還像新娘朴乖。我一直安慰自己祖屏,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評論 6 386
  • 文/花漫 我一把揭開白布买羞。 她就那樣靜靜地躺著袁勺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪畜普。 梳的紋絲不亂的頭發(fā)上期丰,一...
    開封第一講書人閱讀 50,050評論 1 291
  • 那天,我揣著相機(jī)與錄音吃挑,去河邊找鬼钝荡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛舶衬,可吹牛的內(nèi)容都是我干的埠通。 我是一名探鬼主播,決...
    沈念sama閱讀 39,136評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼逛犹,長吁一口氣:“原來是場噩夢啊……” “哼端辱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起圾浅,我...
    開封第一講書人閱讀 37,882評論 0 268
  • 序言:老撾萬榮一對情侶失蹤掠手,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后狸捕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體喷鸽,經(jīng)...
    沈念sama閱讀 44,330評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評論 2 327
  • 正文 我和宋清朗相戀三年灸拍,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了做祝。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鸡岗,死狀恐怖混槐,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情轩性,我是刑警寧澤声登,帶...
    沈念sama閱讀 34,477評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站揣苏,受9級特大地震影響悯嗓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜卸察,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評論 3 317
  • 文/蒙蒙 一脯厨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧坑质,春花似錦合武、人聲如沸临梗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,864評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盟庞。三九已至,卻和暖如春岂贩,著一層夾襖步出監(jiān)牢的瞬間茫经,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,099評論 1 267
  • 我被黑心中介騙來泰國打工萎津, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抹镊。 一個(gè)月前我還...
    沈念sama閱讀 46,598評論 2 362
  • 正文 我出身青樓锉屈,卻偏偏與公主長得像,于是被迫代替她去往敵國和親垮耳。 傳聞我的和親對象是個(gè)殘疾皇子颈渊,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評論 2 351

推薦閱讀更多精彩內(nèi)容