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

时间:2018-03-29 10:58:55

标签: ios objective-c swift arguments operators

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

例如

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

因此,我不想直接使用!=运算符,而是将其作为参数。

功能应如下所示:

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

这个函数应该像这样调用

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

任何帮助都表示赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您必须向openViewIfNeeded提供操作符作为闭包/函数。见这个例子:

typealias Operator = (Int, Int) -> Bool

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

compare(<)

尽管如此,在函数中你不能将运算符写成文字;相反,你必须&#34;打电话&#34;关闭。