Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Операторы присваивания

Отаку

Ученик
В этой теме я не буду рассказывать вам заново, что это за оператор [оператор присваивания]. Я хочу показать лишь пару трюков с этим оператором, о некоторых вы знали.

Сокращенная запись с арифметическими операторами

ОператорПолная записьСокращенная запись
+=a = a + ba += b
-=a = a - ba -= b
*=a = a * ba *= b
/=a = a / ba /= b
%=a = a % ba %= 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' символов, который обозначает конец строки. А в условии делает все то же самое.

Вот и все. Автор я. Если кому-то непонятно, то прошу под топик.
 
Последнее редактирование:
Сверху Снизу