操作符

precedencegroupTablePrecedence {

? ? associativity: left

? ? higherThan: LogicalConjunctionPrecedence

}

precedencegroupSectionPrecedence {

? ? associativity: left

? ? higherThan: TablePrecedence

}

infixoperator+++ : TablePrecedence

infixoperator<<< : SectionPrecedence

precedencegroup: 定義了一個(gè)操作符優(yōu)先級(jí)別。操作符優(yōu)先級(jí)的定義和類型聲明有些相似,一個(gè)操作符比需要屬于某個(gè)特定的優(yōu)先級(jí)。

infix:表示要定義的是一個(gè)中位操作符,即前后都是輸入.

prefix:?前置運(yùn)算符.

postfix:后置運(yùn)算符.

associativity :定義了結(jié)合律,即如果多個(gè)同類的操作符順序出現(xiàn)的計(jì)算順序。

higherThan: 運(yùn)算的優(yōu)先級(jí),點(diǎn)積運(yùn)算是優(yōu)先于乘法運(yùn)算的。

lowerThan:來(lái)指定優(yōu)先級(jí)低于某個(gè)其他組。

分別聲明關(guān)聯(lián)性和優(yōu)先級(jí)

associativity Multiplicative left

precedence Multiplicative>Additive

precedence Exponentiative>Multiplicative

precedence Multiplicative {

? associativity(left)

? precedence(> Additive)

? precedence(< Exponentiative)

}

precedence Multiplicative {

? associativity: left

? precedence: higherThan(Additive)

? precedence: lowerThan(Exponentiative)

}

precedence Multiplicative {

? associativity(left)

? higherThan(Additive)

? lowerThan(Exponentiative)

}

precedence Multiplicative {

? associativity: left,

? higherThan: Additive,

? lowerThan: Exponentiative

}

precedence Multiplicative {

? associativity left

? higherThan Additive

? lowerThan Exponentiative

}

precedence Multiplicative {

? associativity left

? > Additive

? < Exponentiative

}

precedence Multiplicative : associativity(left),

higherThan(Additive),

lowerThan(Exponentiative)


precedence Multiplicative : associativity left,

higherThan Additive, lowerThan Exponentiative

precedence Multiplicative > Additive,

< Exponentiative,

associativity left

precedence left Multiplicative > Additive,

< Exponentiative

precedence associativity(left) Multiplicative > Additive,

< Exponentiative

Swift 標(biāo)準(zhǔn)庫(kù)中已經(jīng)定義了一些常用的運(yùn)算優(yōu)先級(jí)組,比如加法優(yōu)先級(jí) (AdditionPrecedence) 和乘法優(yōu)先級(jí) (MultiplicationPrecedence) 等,你可以在這里找到完整的列表

Standard library changes

precedencegroupAssignmentPrecedence {

? assignment: true

? associativity: right

}

precedencegroupTernaryPrecedence {

? associativity: right

? higherThan: AssignmentPrecedence

}

precedencegroupDefaultPrecedence {

? higherThan: TernaryPrecedence

}

precedencegroupLogicalDisjunctionPrecedence {

? associativity: left

? higherThan: TernaryPrecedence

}

precedencegroupLogicalConjunctionPrecedence {

? associativity: left

? higherThan: LogicalDisjunctionPrecedence

}

precedencegroupComparisonPrecedence {

? higherThan: LogicalConjunctionPrecedence

}

precedencegroupNilCoalescingPrecedence {

? associativity: right

? higherThan: ComparisonPrecedence

}

precedencegroupCastingPrecedence {

? higherThan: NilCoalescingPrecedence

}

precedencegroupRangeFormationPrecedence {

? higherThan: CastingPrecedence

}

precedencegroupAdditionPrecedence {

? associativity: left

? higherThan: RangeFormationPrecedence

}

precedencegroupMultiplicationPrecedence {

? associativity: left

? higherThan: AdditionPrecedence

}

precedencegroupBitwiseShiftPrecedence {

? higherThan: MultiplicationPrecedence

}

postfix operator ++

postfix operator --

// postfix operator !

prefix operator ++

prefix operator --

prefix operator !

prefix operator ~

prefix operator +

prefix operator -

// infix operator = : AssignmentPrecedence

infixoperator*=? : AssignmentPrecedence

infixoperator/=? : AssignmentPrecedence

infixoperator%=? : AssignmentPrecedence

infixoperator+=? : AssignmentPrecedence

infixoperator-=? : AssignmentPrecedence

infixoperator<<= : AssignmentPrecedence

infixoperator>>= : AssignmentPrecedence

infixoperator&=? : AssignmentPrecedence

infixoperator^=? : AssignmentPrecedence

infixoperator|=? : AssignmentPrecedence

// infix operator ?: : TernaryPrecedence

infixoperator||? : LogicalDisjunctionPrecedence

infixoperator&&? : LogicalConjunctionPrecedence

infixoperator<? : ComparisonPrecedence

infixoperator<=? : ComparisonPrecedence

infixoperator>? : ComparisonPrecedence

infixoperator>=? : ComparisonPrecedence

infixoperator==? : ComparisonPrecedence

infixoperator!=? : ComparisonPrecedence

infixoperator=== : ComparisonPrecedence

infixoperator!== : ComparisonPrecedence

infixoperator~=? : ComparisonPrecedence

infixoperator??? : NilCoalescingPrecedence

// infix operator as : CastingPrecedence

// infix operator as? : CastingPrecedence

// infix operator as! : CastingPrecedence

// infix operator is : CastingPrecedence

infixoperator..< : RangeFormationPrecedence

infixoperator... : RangeFormationPrecedence

infixoperator+? : AdditionPrecedence

infixoperator-? : AdditionPrecedence

infixoperator&+? : AdditionPrecedence

infixoperator&-? : AdditionPrecedence

infixoperator|? : AdditionPrecedence

infixoperator^? : AdditionPrecedence

infixoperator*? : MultiplicationPrecedence

infixoperator/? : MultiplicationPrecedence

infixoperator%? : MultiplicationPrecedence

infixoperator&*? : MultiplicationPrecedence

infixoperator&? : MultiplicationPrecedence

infixoperator<<? : BitwiseShiftPrecedence

infixoperator>>? : BitwiseShiftPrecedence

最后編輯于
?著作權(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ù)。

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