如何在函数中将运算符作为参数传递?

How to pass operators as arguments in function?

我想在函数中传递逻辑运算符作为参数。

例如

func openViewIfNeeded() {
    if lastTab != 0 {
      openView()
    } 
}

所以,我希望它作为参数,而不是直接使用 != 运算符。

函数应该如下所示:

func openViewIfNeeded(operator) {
   if lastTab (operator) 0 {
      openView()
   }
} 

这个函数应该这样调用

self.openViewIfNeeded(!=) or self.openViewIfNeeded(==)

感谢您的帮助。

提前致谢。

您必须将运算符作为 closure/function 提供给 openViewIfNeeded。看这个例子:

typealias Operator = (Int, Int) -> Bool

func compare (_ op:Operator) {
  if op(1,2) {
    print ("yes")
  }
}

compare(<)

然而,在函数中,您不能将运算符写成字面量;相反,您必须 "call" 闭包。