如何定义 !! 作为自定义后缀运算符?



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

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

我收到错误消息

运算符

声明中的预期运算符名称

在声明中。

自定义运算符只能使用一组受限制的字符,并且某些运算符是保留的,不能重载。 精确的规则记录在词汇结构中。特别是(着重号是后加的(:

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

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

工作示例:

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

下面是一个例子

//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

最新更新