2015-01-31 22 views
1

根据Swift Standard Library Reference,使用下标运算符的Swift字典查找返回包含在Optional中的可能值。我可以通过模式匹配反对验证这一点:为什么我无法在Swift字典查找值中映射`可选?

let d = [ "a": 1, "b": 2] 

switch d["a"] { 
    case .Some(let x): print(x) 
    case .None: print("Nothing") 
} 

但是,当我尝试使用Optional型的map方法上查找值:

d["a"].map { print($0 * 2) } 

我得到一个错误:

24:1: error: '(String, Int)' does not have a member named 'map' 
d["a"].map { print($1 * 2) } 
^ ~~~ 

这是怎么回事?

+0

我试过在操场上,没有问题运行它。 – 2015-01-31 20:14:38

回答

5

你的问题就在这里:

d["a"].map { print($1 * 2) } 
        ^~~~ you mean $0 

面对这样,斯威夫特让您根据其他种类标(这需要词典的索引,让您一键/值对的最佳猜测,所以会提供第二个参数)。

+0

谢谢,我现在感觉很蠢。 – Yawar 2015-01-31 21:58:29

+0

我们都会不时地做这样的事情:-) – 2015-01-31 21:59:21

相关问题