Swift에서 모음집에서 사전을 작성하려면 Swift reduce
을 사용하려고합니다. 나는 다음과 같은 변수가 있습니다Swift에서 reduce를 사용하여 사전 작성
var _squares : [String] = []
var _unitlist : [[String]] = []
var _units = [String: [[String]]]()
나는 다음과 같은 방법 INT _units
사전 채우려 :
- 내가 전혀보고 싶지
_squares
- 의 모든 요소를 반복 할을
_unitlist
의 목록 및 요소가 포함 된 요소 만 필터링하십시오. - 모든 단일 요소를 키로 포함하는 사전 및 해당 elem을 포함하는 목록을 작성하십시오 가치로서.
예를 들어 설명해주십시오. 우리가있는 경우 :
squares = ["A"]
unitlist = [["A", "B", "C"], ["A", "C"], ["B", "C", "F"]]
예상 출력 키로 사전 디 "A"하고 값으로 [["A", "B", "C"], ["A", "C"]]
한다. 그때 여과하고 내가 reduce
을 사용하려고, 나는 반복 두 번 flatMap
을 사용
_units = _squares.flatMap { s in
_unitlist.flatMap { $0 }.filter {$0.contains(s)}
.reduce([String: [[String]]]()){ (dict, list) in
dict.updateValue(l, forKey: s)
return dict
}
}
:
는이 같은 뭔가를 시도했다.
그러나이 코드를 사용하면 다음과 같은 오류가 발생합니다. Cannot assign value of type '[(key: String, value: [[String]])]' to type '[String : [[String]]]'
그것은 나에게 조금 어둡습니다.
니스와 우아한 해결책 : 여기에 놀이터입니다! 좀 더 자세히 설명해 주시겠습니까? –
@GiovanniGrano 물론, 내 답변에 무엇을 정교하게 쓰겠습니까? –
스위프트는 타입 유추 된 언어'reduce (into : [:]) '입니다. –