这就是我想要的:
swift中的一个函数可以接受一个可选参数,因此以下对函数myFunc
的调用都可以正常工作:
// assume we have a Dictionary like this
let dict=["key":"value"]
myFunc()
myFunc(dict)
函数myFunc
的工作原理如下:
传入myFunc
的任何词典都与myFunc
内的词典合并。如果没有字典传递到myFunc
,则myFunc
内的字典将按原样使用。
这就是我想在Swift中实现的目标。这就是我一直在做的事情:
似乎你不能完全省略参数,但经过一些阅读后我一直在研究默认参数。我希望参数是Dictionary类型,但如果没有指定参数,那么我什么也不想要,或者至少是空字典。我已经声明了一个空字典,如下所示:
let emptyDict = Dictionary<String,String>()
然后我用一个默认参数声明我的函数,如:
func myFunc(paramDict:Dictionary = emptyDict){ ... }
这给了我以下错误:
Reference to generic type 'Dictionary' requires arguments in <...>
我在这里假设它抱怨,因为我使用空字典作为参数。
有人能告诉我如何在Swift中构建一个函数,它可以像{I} myFunc
一样运行吗?
答案 0 :(得分:5)
您必须在函数参数中指定泛型类型:
func myFunc(paramDict:Dictionary<String, String> = emptyDict) { }
^^^^^^^^^^^^^^^^
请注意,您不需要定义变量来指定默认值 - 只需这样:
func myFunc(paramDict:Dictionary<String, String> = [:]) { }
此外,如果您的函数体具有类似&#34的逻辑,您可能需要考虑使用可选项;如果提供了dict,请执行此操作,否则执行此操作&#34;:
func myFunc(paramDict:Dictionary<String, String>? = nil) { }
它的表现力更强,我认为代码更具可读性。