2016-08-24 9 views
8

Xcode 8 बीटा 6 के लिए स्विफ्ट 3 में एक परिवर्तन किया गया है और अब मैं के रूप में मैं पहले किया था सत्ता के लिए अपने ऑपरेटर की घोषणा करने में सक्षम नहीं कर रहा हूँ:स्विफ्ट 3 में नए प्राथमिकता समूह के साथ एक्सपोनेंट/पावर ऑपरेटर कैसे घोषित करें?

infix operator ^^ { } 
public func ^^ (radix: Double, power: Double) -> Double { 
    return pow((radix), (power)) 
} 

मैं इसके बारे में थोड़ा पढ़ा है और वहाँ एक

precedencegroup ExponentiativePrecedence {} 

infix operator ^^: ExponentiativePrecedence 
public func ^^ (radix: Double, power: Double) -> Double { 
    return pow((radix), (power)) 
} 

मैं सही दिशा में जा रहा हूँ यह काम करने के लिए: नया परिवर्तन been introduced in Xcode 8 beta 6

इस से मुझे लगता है मैं एक पूर्वता समूह घोषित करने और इस तरह अपने ऑपरेटर के लिए उपयोग करने के लिए है अनुमान लगा रहा हूँ? मुझे प्राथमिकता समूह के {} के अंदर क्या रखा जाना चाहिए?

मेरे अंतिम उद्देश्य, तेज में एक साधारण ऑपरेटर के साथ सत्ता संचालन सुनिश्चित करने के लिए सक्षम होने के लिए है जैसे:

10 ^^ -12 
10 ^^ -24 

उत्तर

9

आपका कोड पहले से ही संकलित करता है तथा रन - आप एक पूर्वता संबंध या एक परिभाषित करने की जरूरत नहीं है संबद्धता अगर आप बस इस तरह के उदाहरण आप दे दी है के रूप में अलगाव में ऑपरेटर का उपयोग कर रहे:

10 ^^ -12 
10 ^^ -24 

हालांकि, अगर आप अन्य ऑपरेटरों के साथ काम करने के साथ-साथ एक साथ कई एक्स्पोनेंट्स चेनिंग चाहते हैं, आप चाहते हैंके एक प्राथमिकता संबंध को परिभाषित करने के लिएMultiplicationPrecedence और a right associativity

precedencegroup ExponentiativePrecedence { 
    associativity: right 
    higherThan: MultiplicationPrecedence 
} 

इसलिए निम्नलिखित अभिव्यक्ति:

let x = 2 + 10 * 5 ^^ 2 ^^ 3 

मूल्यांकन किया जाएगा के रूप में:

let x = 2 + (10 * (5 ^^ (2 ^^ 3))) 
//   ^^ ^^ ^^--- Right associativity 
//   ||  \--------- ExponentiativePrecedence > MultiplicationPrecedence 
//   \--------------- MultiplicationPrecedence > AdditionPrecedence, 
//       as defined by the standard library 

मानक पुस्तकालय पूर्वता समूहों की पूरी सूची the evolution proposal पर उपलब्ध है।

+0

धन्यवाद! अद्यतन ने इसे और भी स्पष्ट कर दिया! :) – gbdavid

+0

@gbdavid मदद करने के लिए खुश :) – Hamish

संबंधित मुद्दे