Язык программирования Euphoria | страница 30



Заметьте, что символ равенства '=' используется и для записи команды, и как оператор при проверке равенства в выражениях. Но здесь никогда не возникает путаница, так как присваивание в 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


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


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


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


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


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

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


2.5.2 вызов подпрограммы

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


plot(x, 23)


2.5.3 команда if (если)

Команда ветвления if (если) проверяет некоторое условие, убеждаясь в его истинности (не-нуль) или ложности (0), а затем обеспечивает переход к выполнению соответствующих тех или иных серий других команд. В команде if могут содержаться дополнительные пункты проверки elsif (а_если) и else (иначе), то есть,


>if a then

>x = 1

>end if


>if a = 9 and find(0, s) then

>x = 4

>y = 5

>else

>z = 8

>end if


>if char = 'a' then

>x = 1

>elsif char = 'b' or char = 'B' then

>x = 2

>elsif char = 'c' then

>x = 3

>else

>x = -1

>end if


Обратите внимание, что elsif хотя и является сокращением от else if, но это сокращение делает текст более ясным, так как отпадает необходимость в лишнем end if, которое пришлось бы ставить при несокращенной форме. А так имеется только одна закрывающая "скобка" end if для всего блока команды if, даже когда в нём содержится множество пунктов elsif.