我想在Swift函数中传递一个可选的字典参数,我尝试将该函数声明为
func myFunction(_ type:Int, params:Dictionary<String,Any?>?)
以及
func myFunc(_ type:Int, params:[String:Any?]?)
当我尝试传递字典而不是第二个字典时,我得到警告“表达式隐式强制从Any?to Any”和第一个声明。我需要知道两者之间有什么区别以及警告的原因。仅供参考,以下是我在两种情况下都通过字典的方式:
myFunc(1, params:["key1": value1, "key2": value2])
答案 0 :(得分:1)
根据Swift文档,它们是相同的:
Swift字典的类型完整地写为Dictionary&lt; Key, 值&gt;,其中Key是可以用作的值的类型 字典键,而Value是字典的值的类型 这些钥匙的商店。
你也可以用速记形式写一个字典的类型[Key: 值]。虽然这两种形式在功能上是相同的,但是 简写形式是首选,并在本指南中使用时 指的是字典的类型。
我使用的是Xcode版本8.0,我无法重现您的问题。
答案 1 :(得分:0)
它们只是字典声明的不同语法糖,一种类型在所有情况下都不起作用。
例如,
var msSet = [Vertex<Int> : Double]()
我问了一个与之相关的问题。
Swift Dictionary Initialization of custom type gives: '>' is not a postfix unary operator error