2016-05-16 4 views
0

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

Однако я не получаю его принцип «сохранения информации», который гласит, что пользователь должен иметь возможность представлять информацию, необходимую компилятору. В качестве примера упомянуты типы поддиапазонов, которые «упростили бы оптимизацию». Как компилятор может сделать некоторые оптимизации на основе типов поддиапазонов (т. Е. Диапазонов в Swift)? Эта оптимизация применима даже к Swift?

Я попытался придумать примеры кода (которые действительно плохие), однако мне интересно, действительно ли эта информация диапазона может использоваться компилятором для выполнения некоторых оптимизаций или если это всего лишь более короткий способ делать то же самое.

var arr = ["a", "b", "c", "d"] 
arr[1...3] = ["a", "a", "a"] 
// Instead of 
var arr2 = ["a", "b", "c", "d"] 
arr2[1] = "a" 
arr2[2] = "a" 
arr2[3] = "a" 

ответ

1

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

var a = [1,2,3,4] 
a[1...2] = [6,7,8] 
print(a) // result in [1, 6, 7, 8, 4] 

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

+0

Спасибо, это был просто очень плохой пример кода, с которым я пришел. Знаете ли вы, может ли компилятор Swift выполнять некоторые оптимизации в некоторых случаях, например, диапазоны используются? Что они имели в виду: «облегчить оптимизацию»? – HyperZ

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

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