adicionando duplas contidas em um dicionário rápido 3

9

Estou aprendendo um pouco sobre Swift e estou seguindo junto com um curso da Udemy. O curso é ministrado em swift 2 e estou usando o swift 3, então espero entender a diferença de resultados e não encontro nenhuma resposta on-line até agora.
Eu tenho um item de dicionário que contém 3 coisas.

var menu = ["entre" : 5.55, "main-meal": 20.50, "desert": 5.50]

A idéia é adicionar os 3 valores juntos usando a saída dos instrutores (que funciona bem no swift 2):

var totalCost = menu["entre"]! + menu["desert"]! + menu["main-meal"]!

No decorrer do curso, isso funciona muito bem, mas, para mim, é exibido um erro que diz "Não é possível subscrever um valor do tipo 'inout [String: Double]' (também conhecido como 'inout Dictionary')"

O que eu acho muito estranho é que, se eu usar apenas 2 valores, tudo está bem, o problema é quando o terceiro é adicionado. Eu posso contornar o problema adicionando + 0.0 ao final, conforme abaixo:

var totalCost = menu["entre"]! + menu["desert"]! + menu["main-meal"]! + 0.0

O que eu espero entender é qual é a diferença entre as duas versões e, idealmente, o que estou fazendo errado ao adicionar as três juntas sem a minha solução alternativa.

Obrigado antecipadamente.

    
por James Coate 04.11.2016 в 04:58
fonte

1 resposta

2

Soluções alternativas

Por algumas teclas

let (entreCost, desertCost, mainCost) = (menu["entre"]!, menu["desert"]!, menu["main-meal"]!)

let totalCost = entreCost + desertCost + mainCost

Para muitas chaves

let keysToSum = ["entre", "desert", "main-meal"]
keysToSum.map{ menu[$0]!}.reduce(0, +)

Para todas as chaves

menu.values.reduce(0, +)
    
por Alexander 04.11.2016 / 06:59
fonte