2016-08-24 1 views
8

es eine Änderung in Swift 3 für Xcode 8 Beta 6 und jetzt nicht in der Lage meinen Operator für Macht, die ich bin zu erklären, wie ich zuvor:Wie deklariert man in Swift 3 den Exponenten/Energieoperator mit neuer Vorranggruppe?

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

ich ein wenig über sie gelesen habe und es gibt eine neue Änderung been introduced in Xcode 8 beta 6

Von diesem ich vermute, ich habe eine Gruppe Vorrang zu erklären und es für meine Bediener wie folgt verwenden:

precedencegroup ExponentiativePrecedence {} 

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

bin ich in die richtige Richtung, um diese Arbeit zu machen? Was sollte ich in die {} der Vorranggruppe einfügen?

Mein Endziel ist es, an der Macht Operationen mit einem einfachen Operator in schnellen zu machen, zum Beispiel:

10 ^^ -12 
10 ^^ -24 

Antwort

9

Ihr Code bereits kompiliert und ausgeführt - Sie brauchen kein Vorrangverhältnis oder ein definieren Assoziativität, wenn Sie einfach den Operator in Isolation, wie im Beispiel mit Ihnen gab:

10 ^^ -12 
10 ^^ -24 

wenn Sie jedoch mit anderen Betreibern arbeiten möchten, sowie Verkettung mehrerer Exponenten, Sie wollen Definieren einer Vorrangbeziehung, dieistdie MultiplicationPrecedence und a right associativity.

precedencegroup ExponentiativePrecedence { 
    associativity: right 
    higherThan: MultiplicationPrecedence 
} 

Daher wird der folgende Ausdruck:

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

werden bewertet als:

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

Die vollständige Liste der Standardbibliothek Vorrang Gruppen auf the evolution proposal zur Verfügung steht.

+0

Vielen Dank! Das Update hat es noch deutlicher gemacht! :) – gbdavid

+0

@gbdavid Glücklich zu helfen :) – Hamish

Verwandte Themen