将负数文字传递给 Swift 中的扩展属性/方法

Pet*_*erT 5 lexical-analysis operator-precedence swift

我写了一些单位转换的数字扩展,例如:

public extension Double {
    public var dbamp: Double {
        return pow(10, self/20)
    }
}
public extension Int {
    public var dbamp: Double {
        return Double(self).dbamp
    }
}
Run Code Online (Sandbox Code Playgroud)

用于从 db 值计算线性增益乘数。问题是,直觉上我希望(并希望能够写出)类似于-6.dbamp返回值为(-6).dbamp的结果,而结果是-(6.dbamp).

快捷文件指出,

负整数文字通过在整数文字前加上减号 (-) 来表示,如 -42。

但是,这似乎-42并不是真正的整数文字,而是涉及-运算符和整数文字的表达式42。也许这种行为不是 Swift 独有的。

我想可能有可能以某种方式使用自定义优先级/关联性来获得所需的行为,但我感到相当紧张,因为为了一点语法糖而做任何可能会导致潜在的模糊错误的事情。如果有必要改变-运营商的优先级,这显然不是一个值得付出的代价......