Почему не работает инфиксный оператор в swift? - PullRequest
2 голосов
/ 02 апреля 2019

Мой инфиксный оператор для включения не работает.Это добавляет или вычитает.


precedencegroup SquareSumOperatorPrecedence {
    lowerThan: MultiplicationPrecedence
    higherThan: AdditionPrecedence
    associativity: left
    assignment: false
}

infix operator ^: SquareSumOperatorPrecedence
func ^(lhs: Double, rhs: Double) -> Double {
    return pow(lhs, rhs)
}

9 ^ 2// equals 81
//It gives me 11

Я думал, что 9 ^ 2 даст мне 81, но это дало мне 11

1 Ответ

6 голосов
/ 02 апреля 2019

^ уже определен как «побитовый оператор XOR» для целочисленных операндов, и это то, что 9 ^ 2 вычисляет:

9 ^ 2 = 0b1001 ^ 0b0010 = 0b1011 = 11 

(См. Расширенные операторы для получения дополнительной информации о побитовых операторах.)

Вы определили оператор для двойных операндов, и он работает, как и ожидалось, если вы действительно вызовете его со значениями Double:

print(9.0 ^ 2.0) // 81
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...