我该怎么定义!作为自定义的后缀运算符?

时间:2019-08-29 07:18:43

标签: swift operators

我正在尝试创建自己的自定义运算符!

postfix operator !! //error

static postfix func !! (optionalValue: Optional<T>) -> T {
        // realisation
    }

我收到错误消息

  

运算符声明中的预期运算符名称

在声明中。

2 个答案:

答案 0 :(得分:1)

自定义运算符只能使用一组有限的字符,并且某些运算符是保留的,不能重载。 确切的规则记录在Lexical Structure中。特别要强调的是:

  

尽管您可以定义包含问号(?)的自定义运算符,但它们不能仅包含单个问号字符。另外,尽管运算符可以包含感叹号(!),但后缀运算符不能以问号或感叹号开头

  • 您的运算符是泛型,因此您必须使用T<T>声明为占位符类型,
  • 除非在类型内定义,否则函数不得为static

工作示例:

postfix operator =!!

postfix func =!! <T> (optionalValue: Optional<T>) -> T {
    // realization
}

答案 1 :(得分:-1)

这是一个例子

//Define a operator
prefix operator √

//create a function  and perform the operation.
prefix func √(lhs: Double) -> Double {
return sqrt(lhs)
}

//Do operation 
let someVal:Double = 25
let squareRoot = √someVal // result is 5