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

时间:2017-10-21 14:18:05

标签: swift operator-precedence lexical-analysis

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

public extension Double {
    public var dbamp: Double {
        return pow(10, self/20)
    }
}
public extension Int {
    public var dbamp: Double {
        return Double(self).dbamp
    }
}

用于从db值计算线性增益乘数。问题是,直觉上我期望(并且希望能够编写)像-6.dbamp这样的东西来返回值为(-6).dbamp的结果,而结果是{{1} }。

swift documentation表示

  

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

但是,-(6.dbamp)似乎并不是一个整数文字,而是一个涉及-42运算符和整数文字-的表达式。也许这种行为并不是Swift特有的。

我认为有可能以某种方式使用自定义优先级/关联性来获得所需的行为,但是我觉得相当紧张做任何可能导致潜在的模糊错误的事情,因为一些语法糖。如果有必要改变42运算符的优先级,那么这显然不值得付出代价......

0 个答案:

没有答案