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, то операции рассматриваются как операции с плавающей запятой.
пример
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.
Если какой-либо из аргументов не может быть безопасно приведен внутри к числовому типу, он завершается ошибкой.
Булево
Булевы операторы применяются к тем значениям, которые могут быть истинными или ложными. Логические операторы, работающие с 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. Помните, что если любое из значений - ЧИСЛО, то они сравниваются как значения с плавающей запятой.
Способ 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>
Example
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 позволяет вам явно объединять бесконечное количество ПРЯЖИ с помощью оператора 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
Приведенный выше код даст следующий результат:
sh-4.3$ lci main.lo
111.00033
111.00033