Итак, я знаю, что Swift Arrays имеют значение struct
, поэтому они передаются по значению
Вот мой код:
firstSnapshotList
и secondSnapshotList
оба [Snapshot]
if datePicker == firstDatePicker {
firstSnapshotList.removeAll()
if let snapshots = SnapshotList.snapshotDict[dateKey] {
for snapshot in snapshots {
firstSnapshotList.append(snapshot)
}
}
} else if datePicker == secondDatePicker {
secondSnapshotList.removeAll()
if let snapshots = SnapshotList.snapshotDict[dateKey] {
for snapshot in snapshots {
secondSnapshotList.append(snapshot)
}
}
}
так что, как видите, оба блока, если операторы if
одинаковы, за исключением изменяемого массива.
Я хотел бы сначала объявить переменную, var snapshotList = *snapshot reference*
,
и затем, если бы я мог установить эту ссылку либо на firstSnapshotList
, либо на secondSnapshotList
в зависимости от выбора даты, тогда мой код был бы просто
if datePicker == firstDatePicker {
snapshotList = firstSnapshotList
} else if datePicker == secondDatePicker {
snapshotList = secondSnapshotList
}
snapshotList.removeAll()
if let snapshots = SnapshotList.snapshotDict[dateKey] {
for snapshot in snapshots {
snapshotList.append(snapshot)
}
}
Вы могли бы утверждать, что количество строк одинаково, так что это на самом деле не является более читабельным или обслуживаемым - это просто личное предпочтение для меня, я думаю, что вторая версия имеет больше смысла, в основном потому, что нет повторения код
Но если это только часть образа жизни Свифта, я тоже могу с этим жить. Просто интересно, можно ли вообще объявить переменную как ссылку