2015-01-31 25 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

相關問題