Как можно обьяснить этот феномен

swift3

#1

Друзья, подскажите, почему когда мы присваиваем значения переменным “a”, “b” и “c” все три синтаксиса срабатывают:

var myStudents = ["Абрамов":["12.01.2017":4], "Сидоров":["12.01.2017": 5]]

var a = myStudents["Абрамов"]!["12.01.2017"]!
var b = myStudents["Абрамов"]?["12.01.2017"]
var c = myStudents["Абрамов"]!["12.01.2017"]

Заранее большая благодарность!


#2

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#3

А вот давайте разберемся почему эти все три варианта отрабатывать не должны?

Вы работаете со словарем, значит все значения по ключам будут у Вас опциональными, поэтому после первой закрывающей квадратной скобки нужен какой-то знак, либо обозначить опциональность, либо обозначить извлечение опционала. А вот после второй скобки вопросительный знак бессмысленнее, так как и без того у Вас вернется либо опциональное значение, либо nil.