swift - स्विफ्ट 3: प्रीसेडेंस ग्रुप को कैसे संभालना है ऑपरेटर को शरीर के साथ घोषित किया जाना चाहिए?



operators swift3 (1)

SE-0077 अनुसार, ऑपरेटर की प्राथमिकता अब एक जादू संख्या द्वारा निर्धारित नहीं की जाती है - इसके बजाय अब आप higherThan समूह का उपयोग करते हैं और (यदि समूह किसी अन्य मॉड्यूल में रहता है) तो lowerThan समूह precedencegroup समूह संबंध अन्य समूहों के सापेक्ष प्राथमिकता को परिभाषित करने के लिए।

उदाहरण के लिए ( SE-0077 ):

// module Swift
precedencegroup Additive { higherThan: Range }
precedencegroup Multiplicative { higherThan: Additive }

// module A
precedencegroup Equivalence {
  higherThan: Comparative
  lowerThan: Additive  // possible, because Additive lies in another module
}
infix operator ~ : Equivalence

1 + 2 ~ 3    // same as (1 + 2) ~ 3, because Additive > Equivalence
1 * 2 ~ 3    // same as (1 * 2) ~ 3, because Multiplicative > Additive > Equivalence
1 < 2 ~ 3    // same as 1 < (2 ~ 3), because Equivalence > Comparative
1 += 2 ~ 3   // same as 1 += (2 ~ 3), because Equivalence > Comparative > Assignment
1 ... 2 ~ 3  // error, because Range and Equivalence are unrelated

यद्यपि आपके मामले में, जैसा कि ऐसा प्रतीत होता है कि आपके ऑपरेटर को गुणा के लिए उपयोग किया जाता है, आप बस मानक लाइब्रेरी के MultiplicationPrecedence समूह का उपयोग कर सकते हैं, जिसका उपयोग * ऑपरेटर के लिए किया जाता है:

infix operator × : MultiplicationPrecedence

इसे परिभाषित किया गया है:

precedencegroup MultiplicationPrecedence {
  associativity: left
  higherThan: AdditionPrecedence
}

मानक पुस्तकालय प्राथमिकता समूहों की पूरी सूची के साथ-साथ इस परिवर्तन के बारे में अधिक जानकारी के लिए, SE-0077

ऑपरेटर के लिए पूर्व स्विफ्ट 3 कोड था:

infix operator × {associativity left precedence 150}

लेकिन अब, एक्सकोड 8 बीटा 6 के अनुसार, यह निम्नलिखित चेतावनी उत्पन्न करता है:

"operator should not be declared with body"

Precedencegroup predicate का उपयोग करने का सही तरीका क्या है क्योंकि अभी कोई दस्तावेज़ मौजूद नहीं है?

मैंने कोशिश की है, लेकिन काम नहीं करता है:

infix operator × : times
precedencegroup times {
     associativity: left 
     precedence: 150
}




xcode8-beta6