Добавлен LeikyS,
опубликован
Раздел:
Monkey-X
В Monkey-X переменные делятся на два типа
- Global
- Local
Глобальные переменные — это переменные, которые существуют до тех пор, пока выполняется программа.
Локальные переменные — это временные переменные, которые исчезают, при уничтожении локальной области видимости, в которой они были объявлены.
Локальные переменные могут быть объявлены в любой локальной области видимости.
Ниже представлено все, что образует локальную область видимости:
Ниже представлено все, что образует локальную область видимости:
- Операторы внутри функции или метода
- Операторы внутри If, Else If или блока If
- Операторы внутри Case или блока Default
- Операторы внутри While, Repeat и цикла For.
Глобальные переменные могут быть объявлены в области видимости модуля или внутри объявления класса.
Примеры:
Local age:Int=10 ' Локальные переменные'
Local health:Float = 100.0
Global isPlayerAlive:Bool = True ' Глобальные переменные '
Global isFriendly:Bool = True
Типы переменных:
Целое число - Int
Число с плавающей точкой - Float
Строка - String
Boolean - Boolда да тупое название
Число с плавающей точкой - Float
Строка - String
Boolean - Bool
Объявление переменных:
Local Money:Int = 100 ' Целое число диапазон значений от: -2,147,483,648 до 2,147,483,647. '
Local MegaByte:Float = 124.4 ' Число с плавающей точкой '
Local gamePaused:Bool = False ' Boolean '
Local name:String = "John Smith" ' Строка '
Local myVariable% = 1024 ' Тот же Int. В Monkey-X у типов данных есть свои знаки, у Int это %'
Local myVariable# = 3.141516 'Тот же Float. '
Local myVariable? = True 'Тот же Bool'
У String'a нету своего знака
У каждого типа данных есть свой знак и можно писать не Local Variable:Int, а Local Variable%.
Знаки типов данных
Знаки типов данных
- Int это %
Local myVariable% = 1 'Monkey-X понимает как Local myVariable:Int '
- Float это #
Local myVariable# = 1.1 'Monkey-X понимает как Local myVariable:Float '
- Bool это ?
Local myVariable? =True 'Monkey-X понимает как Local myVariable:Bool'
Массивы
Массив — это линейная последовательность значений, доступ к которым осуществляется по целочисленному индексу.
Каждый массив связан с определенным типом — то есть, типом элемента, который содержится в массиве. В связи с особенностями Monkey, тип элемента массива является статическим. Тип должен быть известен во время компиляции, поэтому он не может быть преобразован во время выполнения.
Примеры:
Local box:Int[] 'массив целых чисел '
Local ratio:Float[] 'массив чисел с плавающей точкой '
Local thing:Int[][] 'массив массивов целых чисел '
Литерал массива — разделенная запятыми (возможно пустая) последовательность выражений, заключенных в [ ]. Выражения в записи массива должны быть одного типа. Например:
Local box:Int[]=[] 'пустой массив '
Local scores:Int[]=[10,20,30] 'последовательность, разделенная запятой '
Local text:String[]=["Hello","There","World"] 'последовательность, разделенная запятой '
Для массивов также доступны следующие псевдо-методы:
- Method Length() Property Количество элементов в массиве.
- Method Resize:Array( newLength ) Копирует элементы текущего массива, начиная с первого, в новый массив длиной newLength, и возвращает его.
Local text:String[]=["Hello","There","World"] 'последовательность, разделенная запятой '
Print text.Length 'выведет "3" '
text=text.Resize( 2 )
Print text.Length 'выведет "2" '
Объекты:
Объект — экземпляр класса, который содержит в себе ряд констант, переменных, методов и функций.
Пример:
Local mine:MyClass = New MyClass
Function Main()
Local myObject:=New MyClass
myObject.x=10
myObject.y=20
myObject.z=30
End
Выражения:
Выражения — это часть программы, которая выполняет вычисления, совершает логические операции и возвращает результат выполнения методов и функций.
= | Равно |
< | Меньше, чем |
> | Больше, чем |
<= | Меньше, чем или равно |
>= | Больше, чем или равно |
<> | Не равно |
And | Логическое "и" |
Or | Логическое "или" |
Not | Логическое отрицание |
* | Умножение |
/ | Деление |
Mod Деление по модулю
+ Унарный плюс
- Унарный минус
+ Унарный плюс
- Унарный минус
New Создает новый Объект
Null Не инициализированный объект
True Истина (логический, булев тип)
False Ложь (логический, булев тип)
Self Ссылка на текущий объект класса
Super Обращение к родительскому классу
Null Не инициализированный объект
True Истина (логический, булев тип)
False Ложь (логический, булев тип)
Self Ссылка на текущий объект класса
Super Обращение к родительскому классу
Балансировка типов аргумента
При выполнении арифметических операций с двумя переменными (*, /, Mod, +, -) или операций сравнения (=, <, >, ⇐, >=, <>), аргументы будут сбалансированы в соответствии со следующими правилами:
При выполнении арифметических операций с двумя переменными (*, /, Mod, +, -) или операций сравнения (=, <, >, ⇐, >=, <>), аргументы будут сбалансированы в соответствии со следующими правилами:
Если операнд не строка, не число с плавающей точкой или не целое, то будет сгенерирована ошибка;
Иначе, если операнд является строкой, тогда сбалансированный тип является строкой;
Иначе, если оператор является числом с плавающей точкой, то сбалансированный тип будет числом с плавающей точкой;
В противном случае, сбалансированный тип является целым числом.
В случае арифметических операций, аргументы, при необходимости, неявно преобразуются в сбалансированный тип, точно также, как и результат.
В случае выполнения операций сравнения, аргументы, при необходимости, неявно преобразуются в сбалансированный тип, а результат приводится к логическом (булеву) типу.
Единственная арифметическая операция, которая может быть применена к строкам — это сложение, которое выполнит объединение строк.
Иначе, если операнд является строкой, тогда сбалансированный тип является строкой;
Иначе, если оператор является числом с плавающей точкой, то сбалансированный тип будет числом с плавающей точкой;
В противном случае, сбалансированный тип является целым числом.
В случае арифметических операций, аргументы, при необходимости, неявно преобразуются в сбалансированный тип, точно также, как и результат.
В случае выполнения операций сравнения, аргументы, при необходимости, неявно преобразуются в сбалансированный тип, а результат приводится к логическом (булеву) типу.
Единственная арифметическая операция, которая может быть применена к строкам — это сложение, которое выполнит объединение строк.
Логические операторы
Аргументы логических операторов (And, Or), при необходимости, сначала конвертируются, в булев тип. Соответственно результат также имеет логический тип.
Аргументы логических операторов (And, Or), при необходимости, сначала конвертируются, в булев тип. Соответственно результат также имеет логический тип.
В случае с оператором Or, если результат выражения в левой части является истиной (true), то выражение находящееся в правой части не вычисляется.
Например:
If car<>Null Or GetSpeed()>10 Then...
В приведенном выше примере, если car не инициализированный объект , то выражение справа от Or не вычисляется: то есть функция GetSpeed никогда не будет вызвана.
В случае с оператором And, если результат выражения в левой части является ложью (false), то выражение, находящееся в правой части, не вычисляется.
Например:
If enemies.Count > 0 And HasEnemyInSight() Then ...
В приведенном выше примере, если значение enemies.Count меньше или равно нулю, то выражение справа от And не вычисляется: то есть функция hasEnemyInSight никогда не будет вызвана.
На этом всё... Больше информации в документации
90% информации из документации...
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован freizi