- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
В данном случае наговнокодили создатели свифта.
В Си был оператор for
for (var i = subviews.count - 2; i >= 0; i -= 1)
Но в Swift 3 его выпилили и вместо него изобрели богомерзкий stride:
for i in (subviews.count - 2).stride(through: 0, by: -1)
through - до какого значения должен дойти цикл, включительно. Если вместо него написать to, то будет не включительно. Интуитивно понятно, не так ли? (сарказм).
Ну и до кучи, в случае со stride нужно больше печатать.
Я уже молчу, что ++ и -- посчитали небезопасными и выпилили. Наверно, потому, что некоторые дауны путаются с префиксной и постфиксной версией. теперь надо писать += 1 и -= 1. Очень наглядно, по сравнению с ++ и --
typedef var int?
Речь и шла о наших сях.
ты ошибаешься.
автовывод типа в свифте и для var, и для let. var показывает то, что переменная будет изменена.
И в чём же? В с++ auto никак не влияет на мутабельность объекта, только на вывод типа.
var ~= auto, let ~= const auto
в том, что var - это как auto.
ты ж сам говоришь, что auto - это про автовывод, а var - это про мутабельность.
В общем, я понял, о чём речь. Суть в том, что var не заменяет имя типа, а просто сообщает компилятору, что дальше будет имя переменной, как в scala/go/etc. Тогда да, auto /= var. В плюсах просто нет ключевого слова для ввода имён, хотя иногда эту функцию выполняет auto:
это тоже выпилили
надо писать i = i + 1
>> теперь надо писать += 1 и -= 1
> это тоже выпилили
Мда. Хотел в комментариях написать, что += можно спутать с =+, а создатели языка уже подумали и запретили. В следующий раз запретят весь Swift, чтобы не осталось ни одной потенциально небезопасной конструкции.
Ну да, конечно, а без перегруженых операторов весь код на джаве просто шедевр чистоты и понимания
В 3 свифте stride выглядит чуть лучше - stride(from: subviews.count - 2, through: 0, by: -1) , но всё равно мне не особо нравится.
Лучше уж буду писать for i in (0 ... subviews.count - 2).reverse(), когда шаг 1
For counter = start To end [Step step]
http://php.net/manual/ru/language.generators.overview.php
В Свифте stride создаёт компактный генератор или тупо массив, поглощающий память, как range в PHP?