Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 具有空可变参数的调用函数_Swift - Fatal编程技术网

Swift 具有空可变参数的调用函数

Swift 具有空可变参数的调用函数,swift,Swift,我有一个带有一个可变参数(元组)的函数,如下所示: func conditions<T>(conditions: ([String : T], LogicalOperator)...) -> [AnyObject]? func条件(条件:([String:T],LogicalOperator)…)->[AnyObject]? 没有那个参数有什么办法叫它吗?以某种方式传递一个可变参数的空数组?我只想在没有任何条件的情况下支持一个选项。你可以用它来完成你想要的 您可以重载函数定

我有一个带有一个可变参数(元组)的函数,如下所示:

func conditions<T>(conditions: ([String : T], LogicalOperator)...) -> [AnyObject]?
func条件(条件:([String:T],LogicalOperator)…)->[AnyObject]?

没有那个参数有什么办法叫它吗?以某种方式传递一个可变参数的空数组?我只想在没有任何条件的情况下支持一个选项。

你可以用它来完成你想要的

您可以重载函数定义以不接受任何参数

  • func条件()->[AnyObject]?
或者,您可以重载它以接受您类型的数组

  • func条件(条件:[([String:T],LogicalOperator)])->[AnyObject]?
或者您可以让它接受可选值并传递nil

  • func条件(条件:([String:T],LogicalOperator)?…)->[AnyObject]?

    • 您可以这样做,但不能作为通用函数。为什么?因为它不能推断类型,所以编译器不知道t是什么,即使元组是可选的。因此,理论上,下面的代码可以工作,但执行会下降:

      struct Test<T> {
          func conditions<T>(conditions: ([String : T], String)?...) -> [AnyObject]? {
              return nil
          }
      }
      
      var t = Test<Int>()
      t.conditions() // Error infering type
      
      struct测试{
      func条件(条件:([String:T],String)?…)->[AnyObject]{
      归零
      }
      }
      var t=Test()
      t、 条件()//推断类型时出错
      
      但是,此选项确实有效(如果它确实满足您的需求):

      struct测试{
      typealias testAlias=([String:T],String)
      func条件(条件:testAlias…->[AnyObject]{
      归零
      }
      }
      var t=Test()
      t、 条件()
      
      将其设置为可选或指定默认值?通常,您可以在不带参数的情况下调用函数(具有可变数量的参数)。这里的问题是,如果没有参数,编译器无法推断泛型类型
      T
      。好了,我们开始吧,Martin解释得很好。@sunshine:这并不意味着你必须删除你的答案:)如果我只写注释,这是我的“问题”。感谢Martin澄清这一点。
      func conditions()->[AnyObject]?
      未编译。感谢您提出一些想法+1.
      struct Test<T> {
          typealias testAlias = ([String : T], String)
          func conditions(conditions: testAlias...) -> [AnyObject]? {
              return nil
          }
      }
      
      var t = Test<Int>()
      t.conditions()