如何在Swift 4.2中正确编写以下代码:
let navStack = ["root", "page1", "page3"]
let route = ["root", "page1", "page2", "page3"]
let routeTags =
[
"root": ["root"],
"page1": ["page1", "page2"],
"page3": ["page3"]
]
let r = navStack.map({ routeTags[$0] }).joined(separator: "/")
当前代码无法编译(对成员“下标”的引用不明确)。该代码应产生一个字符串,该字典的字典值根据navStack
中的键进行映射。
答案 0 :(得分:1)
两个问题:
routeTags[$0]
的结果是可选的,必须解包(使用compactMap
安全地包装)。joined
表达式必须移入,因为第二项是数组。let navStack = ["root", "page1", "page3"]
let route = ["root", "page1", "page2", "page3"]
let routeTags =
[
"root": ["root"],
"page1": ["page1", "page2"],
"page3": ["page3"]
]
let r = navStack.compactMap{ routeTags[$0]?.joined(separator: "/") }
或者,如果您需要一个字符串,则必须两次使用joined
:
let r = navStack.compactMap{ routeTags[$0]?.joined(separator: "/") }.joined(separator: "/")