Отаку
Ученик
В этой теме я не буду рассказывать вам заново, что это за оператор [оператор присваивания]. Я хочу показать лишь пару трюков с этим оператором, о некоторых вы знали.
Сокращенная запись с арифметическими операторами
Думаю, вы сами сможете придумать, как и в каких случаях лучше сокращать запись.
Присваивание "налету" или присваивание во время логического выражения
Я не настолько программист, чтобы описать правильное название этого трюка. Поэтому, назовем это "налету". :al:
В программировании часто встречаются моменты, когда мы пишем код так
Конечно, так писать правильно, но можно писать и так
Такой трюк особенно полезен, когда мы часто обращаемся в цикле к одному и тому же элементу массива. Рациональнее записать значение этого элемента в переменную и использовать ее. Не секрет, что это быстрее.
Банальный пример. Давайте уберем символ "_" из имени игрока.
Вот и все. Автор я. Если кому-то непонятно, то прошу под топик.
Сокращенная запись с арифметическими операторами
| Оператор | Полная запись | Сокращенная запись |
| += | a = a + b | a += b |
| -= | a = a - b | a -= b |
| *= | a = a * b | a *= b |
| /= | a = a / b | a /= b |
| %= | a = a % b | a %= b |
Думаю, вы сами сможете придумать, как и в каких случаях лучше сокращать запись.
Присваивание "налету" или присваивание во время логического выражения
Я не настолько программист, чтобы описать правильное название этого трюка. Поэтому, назовем это "налету". :al:
В программировании часто встречаются моменты, когда мы пишем код так
Код:
переменная = НекаяФункция();
if (переменная <лог. оператор> <второй операнд>) { ... }
Код:
if ((переменная = НекаяФункция()) <лог. оператор> <второй операнд>) { ... }
Банальный пример. Давайте уберем символ "_" из имени игрока.
- Вариант первый.
Пример рабочий и его можно использовать, но ... его можно улучшить.PHP:stock GetPlayerNickName(src[], dst[]) { new i; while (src[i] != '\0') { dst[i] = src[i]; if (src[i] == '_') dst[i] = ' '; i++; } return i; } - Пример второй:
Такая запись сделала немного этот код для кого-то страшным.PHP:stock GetPlayerNickName(src[], dst[]) { new i, chr; while ((chr = src[i]) != '\0') { if ((dst[i] = chr) == '_') dst[i] = ' '; i++; } return i; }
Как же он работает? Да все просто: в цикле, мы переменной chr присваиванием значение i-того элемента массива src[], а потом результат присваивания [то, что присвоили] сравниваем с '\0' символов, который обозначает конец строки. А в условии делает все то же самое.
Вот и все. Автор я. Если кому-то непонятно, то прошу под топик.
Последнее редактирование:
