Учебники

Lolcode — Операторы

Операторы играют важную роль для выполнения различных операций с переменными. Эта глава знакомит вас с различными операторами в LOLCODE и их использованием.

операторы

Математические операторы зависят от префиксной нотации, т. Е. От нотации перед операндом. Когда всем операторам известно число аргументов или операндов, маркеры группировки не нужны. В тех случаях, когда операторы не имеют фиксированных аргументов или операндов, операция закрывается с помощью MKAY.

MKAY не может быть использован, если он совпадает с концом оператора. В таких случаях следует использовать ключевое слово EOL. Чтобы использовать унарные математические операторы, используйте следующий синтаксис —

<operator> <expression>

Ключевое слово AN может дополнительно использоваться для разделения аргументов и применения одной операции к нескольким операндам, поэтому выражение бинарного оператора имеет следующий синтаксис:

<operator> <expression1> AN <expression2>

Любое выражение, содержащее оператор с бесконечным числом аргументов, может быть выражено с помощью следующего синтаксиса:

<operator> <expression1> [[AN <expression2>] AN <expression3> ...] MKAY

математический

Ниже приведены основные математические операции в LOLCODE —

SUM OF <a> AN <b>      BTW This is a plus + operator
DIFF OF <a> AN <n>     BTW This is a minus - operator
PRODUKT OF <a> AN <n>  BTW This is a multiply operator *
QUOSHUNT OF <a> AN <n> BTW This is a divide operator
MOD OF <a> AN <n>      BTW This is a modulo operator
BIGGR OF <a> AN <n>    BTW This is a max operator
SMALLR OF <a> AN <n>   BTW This is a min operator

<a> и <b> могут быть уникальными выражениями в приведенном выше, поэтому математические операторы могут быть вложенными и сгруппированными на неопределенное время.

Математика выполняется, рассматривая аргументы как целочисленную математику при наличии двух NUMBR, но если любое из выражений равно NUMBAR, то операции рассматриваются как операции с плавающей запятой.

пример

Live Demo

HAI 1.2
   I HAS A m ITZ 4
   I HAS A n ITZ 2
VISIBLE SUM OF m AN n      BTW +
VISIBLE DIFF OF m AN n     BTW -
VISIBLE PRODUKT OF m AN n  BTW *
VISIBLE QUOSHUNT OF m AN n BTW /
VISIBLE MOD OF m AN n      BTW modulo
VISIBLE BIGGR OF m AN n    BTW max
VISIBLE SMALLR OF m AN n   BTW min
KTHXBYE

Приведенный выше код выдаст следующий вывод при его запуске:

sh-
4.3$ lci main.lo
6
2
8
2
0
4
2

Важные моменты —

Рассмотрим следующие важные моменты, связанные с работой с математическими операторами в LOLCODE-

  • Если один или оба аргумента в выражении являются YARN, они обрабатываются как NUMBAR.

  • Если какой-либо из аргументов не может быть безопасно приведен к числовому типу, он завершается с ошибкой

Если один или оба аргумента в выражении являются YARN, они обрабатываются как NUMBAR.

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

логический

Булевы операторы применяются к тем значениям, которые могут быть истинными или ложными. Булевы операторы, работающие над TROOF, следующие:

BOTH OF <m> AN <n>             BTW its and operation: WIN if m = WIN and n = WIN
EITHER OF <m> AN <n>           BTW its or operation: FAIL iff m = FAIL, n = FAIL
WON OF <m> AN <n>              BTW its xor operation: FAIL if m = n
NOT <m>                        BTW its an unary negation: WIN if m = FAIL
ALL OF <m> AN <n> ... MKAY     BTW it will take infinite arguments and apply AND
ANY OF <m> AN <n> ... MKAY     BTW it will take infinite arguments and apply OR.

Обратите внимание, что <m> и <n> в приведенном выше синтаксисе выражения автоматически приводятся как значения TROOF, если они еще не являются значениями TROOF.

сравнение

Если вы хотите сравнить два или более операнда в LOLCODE, вы можете сделать это любым из следующих способов:

Способ 1

Вы можете сравнить два бинарных операнда, используя операторы равенства. Синтаксис показан ниже —

BOTH SAEM <m> AN <n>   BTW this will return WIN if m is equal to n
DIFFRINT <m> AN <n>    BTW this will return WIN if m is not equal to n

Способ 2

Вы можете сравнить, если оба значения имеют тип NUMBR. Помните, что если любое из значений является NUMBAR, они сравниваются как значения с плавающей запятой.

Способ 3

Вы также можете выполнить сравнение, используя операторы минимума и максимума. Синтаксис показан ниже —

BOTH SAEM <m>   AN BIGGR OF <m> AN <n>

BOTH SAEM <m>  AN SMALLR OF <m> AN <n>
DIFFRINT <m>  AN SMALLR OF <m> AN <n>
DIFFRINT <m> AN BIGGR OF <m> AN <n>

пример

Live Demo

HAI 1.2
I HAS A VAR11 ITZ 7
BOTH SAEM VAR11 SMALLR OF VAR11 AN 8, O RLY?
YA RLY
VISIBLE "TRUE"
NO WAI
VISIBLE "FALSE"
OIC
KTHXBYE

Вы можете увидеть следующий вывод при выполнении данного кода —

sh-
4.3$ lci main.lo

TRUE

Конкатенация ценностей

LOLCODE позволяет вам явно объединять бесконечное число YARN с помощью оператора SMOOSH… MKAY. Для объединения нескольких аргументов можно разделить оператором AN .

пример

Live Demo

HAI 1.2
I HAS A VAR1 ITZ A YARN
VAR1 R "TRUE"

I HAS A VAR2 ITZ A YARN
VAR2 R "ANOTHER TRUE"

I HAS A VAR3 ITZ A YARN
VAR3 R "ONE MORE TRUE"
VISIBLE SMOOSH VAR1 " " VAR3 " " VAR2 MKAY
KTHXBYE

Приведенный выше код даст следующий результат после выполнения —

sh-
4.3$ lci main.lo

TRUE ONE MORE TRUE ANOTHER TRUE

Тип литья

Операторы, которые работают с определенными типами, неявным образом приводят или преобразуют значения одного типа в другой тип. Если значение не может быть безопасно преобразовано в другой тип, это приводит к ошибке.

Значение выражения может быть явно приведено или преобразовано в некоторый другой тип с помощью бинарного оператора MAEK. Синтаксис оператора MAEK —

MAEK <expression> A <type>

где <тип> может быть одним из TROOF, YARN, NUMBR, NUMBAR или NOOB.

Чтобы явно привести переменную к другому типу, можно использовать нормальный оператор присваивания с оператором MAEK или оператор присваивания приведения может быть использован следующим образом:

<Any_variable> IS NOW A <type>  BTW this code will be equal to
<Any_variable> R MAEK <variable> A <type>

пример

Live Demo

HAI 1.2
I HAS A food ITZ "111.00033"
VISIBLE food

BTW this is how we do type casting
MAEK food A NUMBAR
VISIBLE food
KTHXBYE

Приведенный выше код даст следующий вывод: