【问题标题】:How can I define !! as a custom postfix operator?怎么定义!!作为自定义后缀运算符?
【发布时间】:2019-08-29 07:18:43
【问题描述】:

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

postfix operator !! //error

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

我收到错误消息

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

在声明中。

【问题讨论】:

    标签: swift operators


    【解决方案1】:

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

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

    还有

    • 你的操作符是通用的,所以你必须用&lt;T&gt;声明T作为占位符类型,
    • 函数不得为static,除非在类型中定义。

    工作示例:

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

    【讨论】:

      【解决方案2】:

      这是一个例子

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 1970-01-01
      • 2012-08-06
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多