Операторы в GDScript

Они в основном используются в вычислениях, сравнениях и операциях над бинарными битами.

Они вычисляются в порядке важности (приоритета).

Например, в вычислении: умножение (x) имеет приоритет над сложением (+), поэтому 2 + 3 x 2 равно 8, а не 10. Хороший калькулятор должен следовать этому правилу приоритета. В качестве упражнения проверьте это в приложении калькулятора на своем смартфоне.

В следующих таблицах перечислены операторы с самым высоким приоритетом.

Математические операторы

OperatorDescription
-xNegation
* / %Times / Divide / Remainder
+Add
Subtract

Остаток применяется к целым числам и работает следующим образом: 5 % 2 равно 1, потому что 5, деленное на 2, равно 2 с остатком 1.

Одним хорошим способом использования этого оператора (также известного как оператор деления по модулю) является ограничение диапазона значения счетчика. Если делитель равен n, то счетчик будет учитывать от 0 до n — 1, возвращаясь к нулю при каждом кратном n. Ожидайте примера кода, использующего эту концепцию, позже в серии учебных материалов.

Некоторые ярлыки для присваивания доступны следующим образом (у них самый низкий приоритет по сравнению с чем-либо — как можно предположить, учитывая, что они принимают результат предыдущей оценки):

ExampleEquivalent Operation
x += 1x = x + 1
x -= 1x = x — 1
x *= 2x = x * 2
x /= 2x = x / 2
x %= 3x = x % 3

Булевые операторы

Это операторы сравнения и логические операторы, которые в основном используются в операторах if.

OperatorsDescription
< == > != >= <=Comparison operators
! notNOT
&& andAND
|| orOR

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

Результат булевой операции — это true или false.

Пример: x = 3 > 4 or 5 < 6 # x == true

Битовые операторы

Примечание: битовые операторы не используются часто, если вы не занимаетесь чем-то довольно техническим, связанным с манипулированием битами.

Каждое число или символ состоит из двоичных битов, поэтому мы можем инвертировать биты, сдвигать биты, маскировать биты и так далее. Отдельные биты — это нули и единицы. Они устанавливаются или сбрасываются в соответствии с логическими операциями, связанными с тем, как работают цифровые логические элементы.

Первый бит называется младшим битом (Least Significant Bit, LSB), а последний бит называется старшим битом (Most Significant Bit, MSB). Числа, составленные из битов 0 или 1, являются двоичными числами.

Подсчет в двоичной системе выглядит так: 0 1 10 11 100 101 110 111 1000 …

Однако в редакторе мы видим только десятичные эквиваленты чисел. Поэтому вам придется представить себе двоичный эквивалент числа 8, который равен 1000.

В качестве упражнения: используйте программный калькулятор в Windows (или аналогичное приложение в вашей ОС), чтобы привыкнуть к экспериментам с двоичными числами.

OperatorDescription
~NOT (inverts the bits)
<< >>Shift bits of left-side operand left or right by n positions (1 << 2 == 4)
&Logical AND of two values
^Logical XOR of two values
|Logical OR of two values
&= |=Assignment shortcuts

Оценка по сокращенному методу

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

Имея этот навык, мы можем упорядочивать части выражения так, чтобы более важные или быстрые части находились слева.

Например: переменная, ссылка на объект, может быть равной null, что оценивается как ложь в логическом выражении, но вызов метода объекта, когда он равен null, вызовет ошибку.

Вот несколько примеров:

func _ready():
    var x = 4
    var y = 6
    if x < y or x > 0: # Only x < y needs to be evaluated here
        print("ok")
    var label = Label.new()
    # Here we ensure that label exists before evaluating
    # the right side of the expression.
    if label and label.text == "":
        label.text = "Hello"

Мы рассмотрели математические, логические и битовые операторы в порядке их полезности и, следовательно, важности для понимания. Некоторые операторы GDScript были опущены в этом разделе, так как они являются частью более продвинутых тем, которые будут введены позже, так что ожидайте их в будущих уроках!

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

семнадцать − семь =

Прокрутить вверх