2014-09-14 1 views
1

может объяснить, почему строка 1 работает, чтобы создать пустой словарь swift, но строка 2 не работает, когда я пытаюсь создать быстрый словарь с ключом int и набором двойных значений. .. как это сделать?swift - создать пустую строку: словарь кортежей, используя литерал

var testDic2 = [Int:Double]() 

var testDic3 = [Int:(Double,Double)]() 

Я пробовал различные комбинации на игровых площадках и единственная версия, где оно не дает мне ошибку компилятора заключается в следующем

var possibleTips = [Int(): (tipAmt:Double(), total:Double())] 

, но им не уверен, что эта последняя форма декларирует словаря, как я (т. е. согласно testDict3 выше)

+0

Невозможно воспроизвести ошибку, исходя из того, что вы сказали. Голосование, чтобы закрыть на этой основе. – matt

ответ

5

Компилятор не уверен, как создать экземпляр типа во втором и третьем примерах. Вместо этого вы можете объявить тип и использовать пустой инициализатор словаря:

var testDic:[Int:(Double,Double)] = [:] 
+0

[Мне пришлось использовать этот способ обхода] (http://stackoverflow.com/questions/25682113/why-cant-i-instantiate-an-empty-array-of-a-nested-class/25683424#25683424) для получения массива вложенных экземпляров класса. Это также не работало с синтаксисом инициализатора. Я бы сказал, что это ошибка компилятора; Я не понимаю, почему это не должно работать. –

+0

Я видел радар некоторое время назад, не уверен, что это за статус - но я видел, как это случалось иногда и иногда срабатывало, поэтому я предполагаю, что это действительно ошибка. Кроме того, я вижу людей с этой проблемой в # swift-lang время от времени. Это исправление является самым коротким, с которым мы столкнулись, и оно работает последовательно. Надеюсь, в будущем это не понадобится. –

 Смежные вопросы

  • Нет связанных вопросов^_^