这就是我想要的:
swift中可以接受可选参数的函数,因此对函数myFunc的以下调用都可以正常工作:

// assume we have a Dictionary like this
let dict=["key":"value"]

myFunc()
myFunc(dict)

函数的工作方式如下:
任何传入myFunc的字典都与myFunc中的字典合并。如果没有字典传递到myFunc中,则myFunc中的字典将按原样使用。
这就是我想在斯威夫特取得的成就。我就是这么想的:
似乎你不能完全忽略参数,但在阅读了一些关于我一直在寻找默认参数。我希望参数是Dictionary类型,但如果没有指定参数,则不需要任何参数,或者至少需要一个空字典。我已经声明了一个空字典如下:
let emptyDict = Dictionary<String,String>()

然后我用一个默认参数声明函数,如下所示:
func myFunc(paramDict:Dictionary = emptyDict){ ... }

这会导致以下错误:
Reference to generic type 'Dictionary' requires arguments in <...>

我假设这是抱怨,因为我使用一个空字典作为参数。
有谁能教我如何用Swift构建一个函数,它能像我想的那样工作吗?

最佳答案

必须在函数参数中指定泛型类型:

func myFunc(paramDict:Dictionary<String, String> = emptyDict) { }
                                ^^^^^^^^^^^^^^^^

请注意,您不需要定义变量来指定默认值—只需如下操作:
func myFunc(paramDict:Dictionary<String, String> = [:]) { }

此外,如果函数主体具有类似“如果提供了dict,则执行此操作,否则执行此操作”的逻辑,则可能需要考虑使用可选函数:
func myFunc(paramDict:Dictionary<String, String>? = nil) { }

在我看来,它更具表现力,代码更具可读性。

关于dictionary - 具有选项参数的函数,或使用空的Dictionary作为默认参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26782465/

10-12 00:15
查看更多