Операторы играют важную роль для выполнения различных операций с переменными. Эта глава знакомит вас с различными операторами в 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, то операции рассматриваются как операции с плавающей запятой.
пример
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>
пример
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 .
пример
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>
пример
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
Приведенный выше код даст следующий вывод: