Книга: Язык программирования Euphoria. Справочное руководство

2.5.1 команда присваивания

2.5.1 команда присваивания

В Euphoria команда присваивания служит для придания величины, полученной при вычислении выражения, простой переменной или элементу ряда, или отрезку ряда, то есть,

x = a + b
y[i] = y[i] + 1
y[i..j] = {1, 2, 3}

По этой команде предыдущая величина переменной или элемента(ов) ряда, или отрезка ряда аннулируется, а новая вступает в действие. Например, предположим, что x был 1000-элементным рядом, который мы инициализировали следующим образом:

object x
x = repeat(0, 1000) -- ряд, состоящий из 1000 нулей

а затем мы присвоили x значение атома:

x = 7

Такое действие полностью законно, так как мы объявили x как object. Предыдущая величина x, а именно, 1000-элементный ряд, просто исчезнет. Одновременно то пространство, которое занимал в памяти 1000-элементный ряд, будет автоматически возвращено в резерв вашей программы, благодаря динамическому распределению памяти, работающему в Euphoria.

Заметьте, что символ равенства '=' используется и для записи команды, и как оператор при проверке равенства в выражениях. Но здесь никогда не возникает путаница, так как присваивание в Euphoria является только командой, и оно не может быть использовано в составе выражений (как это бывает в других языках).

Euphoria имеет также некоторые дополнительные формы команды присваивания.

Чтобы сократить код и сделать его чуть-чуть красивее, вы можете объединить символ присваивания с одним из операторов:

+ - / * &

Например, вместо того, чтобы писать:

mylongvarname = mylongvarname + 1

вы можете записать:

mylongvarname += 1

вместо записи:

galaxy[q_row][q_col][q_size] = galaxy[q_row][q_col][q_size] * 10

будет работать:

galaxy[q_row][q_col][q_size] *= 10

а вместо:

accounts[start..finish] = accounts[start..finish] / 10

просто:

accounts[start..finish] /= 10

В общем случае, везде, где вы имеете присваивание в форме:

левая_часть = левая_часть оп выражение

вы можете записать:

левая_часть оп= выражение

где оп может быть одним из: + - * / &

Когда левая_часть содержит несколько индексирований/сечений, форма оп= будет исполняться обычно быстрее, чем длинная форма. Когда вы привыкнете к короткой форме, вы сможете заметить, что форму оп= легче читать, так как здесь нет необходимости визуально сравнивать левую_часть с её же копией, расположенной в команде справа.

Оглавление книги


Генерация: 1.475. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз