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]?
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()