2017-03-03 1 views
1

신속한 사전 교육 사전 작동 방식을 이해하려고합니다. 놀이터 사용. 나는 "메뉴"라는 간단한 사전을 만들었는데, 그 이름은 키 이름으로 값의 값을 가진 항목의 목록을 가지고있다. 그래서 같이 : 다음신속한 사전을 사용하여 추가 작업을 수행하는 동안 오류가 발생했습니다.

let menu = ["crisps": 2, 
      "oranges": 3, 
      "chicken": 8, 
      "meat": 12] 

, 난과 같이 해당 항목의 값을 추가하려고 :

let costOfMeal = menu["crisps"]! + menu["oranges"]! + menu["chicken"]! + menu["meat"]! 

이 나에게 오류를 제공합니다 : 모호한 참조를

확실하지 '+'멤버 무슨 일이야. 모든 의견을 감사드립니다.

감사합니다,

데이비드

+0

이것은 Swift 3.1에서 수정 된 버그입니다. – Hamish

답변

0

이것은 래핑되지 않은 옵션을 여러 번 추가하면 컴파일러의 자동 형 변환이 혼란스러워집니다.

수식에 실제 정수를 추가하면 도움이됩니다.

let costOfMeal = 0 + menu["crisps"]! + menu["oranges"]! + menu["meat"]! + menu["chicken"]! 

은 당신이 배우려고하는지와는 아무 상관이 없으며 수식은 (생산이기는하지만 안전하지) 정확했다대로 당신을 귀찮게하지 마십시오.

1
let costOfMeals = Array(menu.values).reduce(0, +) 

당신은 모든 키와 값 함께를 추가하려고! 값만 추가해야합니다. 사전은 키와 값이라는 것을 알기 때문에 값의 합을 추가해야합니다.

+1

새'Array'에'menu.values'를 래핑 할 필요가 없습니다. – Alexander

관련 문제