Swift: объявление пустых кортежей

Каков правильный способ объявления пустого кортежа?

  • Для массивов: var myArr : [String] = []
  • Для кортежей: var myTuple: (key: String, val: Int) = ()?

Есть ли правильный способ достичь этого?

Ответ 1

Не существует такой вещи, как "незаполненное" значение кортежа. Другими словами, вы не создаете пустой кортеж, а затем добавляете к нему значения позже. Важно помнить, что кортежи не являются коллекциями, такими как Array или Dictionary. Кортежи являются структурированными типами. Например, вы не можете перебирать кортеж с циклом for. В вашем примере myTuple - это одно значение, которое содержит String и Int.

Кортеж похож на безымянную структуру по требованию, такую как следующая структура, но если бы она была безымянной:

struct MyStruct {
    let key: String
    let val: Int
}

Если вы хотите смоделировать отсутствующее значение кортежа, вы должны сделать тип всего кортежа необязательным. Например:

var myTuple: (key: String, val: Int)? = nil