dictionary - 带有选项参数或使用空字典作为默认参数的函数

标签 dictionary swift optional-parameters

这就是我想要的:

swift 中的一个函数可以接受可选参数,因此以下对函数 myFunc 的调用都可以正常工作:

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

myFunc()
myFunc(dict)

myFunc 函数的工作原理如下:

任何传入 myFunc 的字典都会与 myFunc 中的字典合并。如果没有字典传递到 myFunc 中,那么 myFunc 中的字典将按原样使用。


这就是我想在 Swift 中实现的目标。这就是我一直在做的事情:

似乎你不能完全省略参数,但在阅读了一些相关资料后,我一直在研究默认参数。我希望参数是字典类型,但如果没有指定参数,那么我什么都不想要,或者至少是一个空字典。我已经像这样声明了一个空字典:

let emptyDict = Dictionary<String,String>()

然后我用默认参数声明我的函数,如下所示:

func myFunc(paramDict:Dictionary = emptyDict){ ... }

这给了我以下错误:

Reference to generic type 'Dictionary' requires arguments in <...>

我在这里假设它在提示,因为我使用一个空字典作为参数。

任何人都可以告诉我如何在 Swift 中构建一个可以像我想要的那样运行的函数 myFunc 吗?

最佳答案

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

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

请注意,您不需要定义变量来指定默认值 - 只需这样做:

func myFunc(paramDict:Dictionary<String, String> = [:]) { }

此外,如果您的函数主体具有类似“如果提供字典则执行此操作,否则执行此操作”这样的逻辑,您可能需要考虑使用可选项:

func myFunc(paramDict:Dictionary<String, String>? = nil) { }

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

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

相关文章:

c# - 用于流畅界面的 IDictionary AddAndReturn 扩展

c# 如何连接到字典值

python - 如何获取Python字典中的有序数据?

ios - 无法在iOS Swift中使用类型为json的参数列表调用append

Python:使用列格式打印字典?

JSON 解码器 Swift 4.0

swift - 当 swift 中 tableView 单元格的高度扩展时更改标签文本

VBA 函数 可选参数

go - 在结构中表示可选 time.Time 的惯用方式

c# - 在 C# 中使用可选参数从 Web 引用调用 WebMethod