Jim*_*ery 0 dictionary optional-parameters swift
这就是我要的:
swift中的函数可以采用可选参数,因此对函数的以下调用myFunc
都可以正常工作:
// assume we have a Dictionary like this
let dict=["key":"value"]
myFunc()
myFunc(dict)
Run Code Online (Sandbox Code Playgroud)
功能 myFunc
工作方式如下:
传入的任何词典myFunc
都会与其中的词典合并myFunc
。如果没有传递myFunc
字典,则里面的字典myFunc
将按原样使用。
这就是我想在Swift中实现的目标。这就是我一直在做的事情:
似乎不能完全省略参数,但是在阅读了一些有关我的内容后,我一直在研究默认参数。我希望参数的类型为Dictionary,但是如果没有指定参数,那么我什么也不想要,或者至少是一个空的Dictionary。我已经这样声明了一个空字典:
let emptyDict = Dictionary<String,String>()
Run Code Online (Sandbox Code Playgroud)
然后使用默认参数声明函数,如下所示:
func myFunc(paramDict:Dictionary = emptyDict){ ... }
Run Code Online (Sandbox Code Playgroud)
这给了我以下错误:
Reference to generic type 'Dictionary' requires arguments in <...>
Run Code Online (Sandbox Code Playgroud)
我假设这是在抱怨,因为我使用空字典作为参数。
有人可以告诉我如何在Swift中构建一个功能,该功能可以实现我想要的功能myFunc
吗?
您必须在function参数中指定通用类型:
func myFunc(paramDict:Dictionary<String, String> = emptyDict) { }
^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
请注意,您不需要定义变量来指定默认值-只需这样做:
func myFunc(paramDict:Dictionary<String, String> = [:]) { }
Run Code Online (Sandbox Code Playgroud)
此外,如果函数的主体具有类似“如果提供了dict则执行此操作,否则执行该操作”之类的逻辑,您可能需要考虑使用可选方法:
func myFunc(paramDict:Dictionary<String, String>? = nil) { }
Run Code Online (Sandbox Code Playgroud)
我认为它更具表现力,代码更具可读性。