Эта страница только для чтения. Вы можете посмотреть её исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. ====== Базовые знания и понятия ====== //(Некоторый функционал в этом руководстве реализован в ещё не вышедшей версии интерпретатора)// Самое главное: одна строка - одна инструкция интерпретатору ===== Методы ===== Вызов функции (тут мы называем это методы, хоть язык и не ООП): <code python> print, "Hello, World!" </code> ==== Опускание запятых ==== В версии языка 2024 года добавлена возможность опустить запятую после названия метода, например: <code python> append "Hello, ", "World!" print returned </code> ==== Модули (классы) ==== Если функция находится в модуле (тут это называется классы, хоть опять же, это не ООП): <code python> fs:open, "myname.txt" </code> Но предварительно, надо класс импортировать: <code python> use, "fs" </code> ==== Возвращаемые значения ==== Если метод что-то возвращает, он записывается в переменную //returned//: <code python> fs:open, "myname.txt" file = returned </code> Но если функция вызывается из сегмента, то возвращаемое значение записывается в r_*названиеСегмента*. ===== Математика ===== Математика в языке базовая, доступны операция сложения, вычитания, умножения и деления. Если на одной строке несколько математических операций, то выполняются они по порядку слева-направо (правила математики не работают): <code python> return, 2+2*2 # => 8 </code> Также математика работает внутри строк: <code python> print, "2+2" # => 4 </code> ==== Комментарии ==== Выше можно наблюдать использование комментария: здесь комментарий занимает целую строку с самого её начала, и его нельзя начать где-то ещё. Сработает: <code python> # Комментарий </code> Не сработает: <code python> hello:hello # Комментарий </code> ===== Переменные ===== В языке динамическая строгая система типизации, переменные определяются так: <code python> myvar = "My Text" myint = 124 </code> Значение переменной изменяется таким же методом, но это не выйдет, если значение отличного от типа текущего значения. Если нужно задать значение с другим типом, предварительно можно назвать переменную по другому или её удалить: <code python> free, myvar </code> Существует четыре типа: - **unknown**: это специальный тип, который означает, что введённой переменной не существует; - **int**: целое число, его размер определяется автоматически; - **string**: строка; - **float64**: 64-битное число с плавающей точкой. Некоторые методы могут попросить у вас ввести на входе несуществующую переменную, куда в дальнейшем запишут данные. Пример: <code python> fs:read, file, data # data до вызова метода это unknown typeof, data # => string </code> Или же в документации по методу он может написать **any**. В этом случае, аргумент принимает любой тип данных. ==== Объединение строк ==== Соединить строки можно с помощью встроенного метода //append//: <code python> name = "Yakov" append, "Hello, ", name print, returned </code> ==== Массивы ==== Массив создаётся специальной инструкцией: <code python> array string arr[24] </code> В случае выше - string это тип данных у элементов массива, arr - его название, и число в скобках - размер. <code python> array string arr[2] arr[0] = "Hello" arr[1] = "World" print, arr[0] # => Hello </code> Математика внутри индексов массивов не работает: <code python> array int arr[2] # Не сработает: arr[0+1] = 1 # Сработает: i = 0+1 arr[i] = 1 </code> Более ненужный массив всё также можно удалить с помощь метода //[[functions:free|free]]//. ===== Сравнения ===== В одном заголовке блока if-else можно использовать только одно сравнение: <code python> if 1 == 1 print, "Yes!" elif 1 == 2 print, "Maybe" else print, "No!" end # end в конце блоков if-else обязательно </code> Но внутри if-else можно вкладывать сколько угодно if-else! <code python> x = 5 y = 5 if x == y print, "Yes" if x == y print, "Hey!" if 5 == 4 print, "What the..?" elif 5 == 5 print, "Oh yeah" else print, "phew.." end end elif x != y print, "No" end </code> В сравнениях поддерживаются такие операции: * Для **int** и **float64**: ==, !=, >, >=, <, <= * Для **string**: ==, != * Сравнивать массивы нельзя. ===== jump-метки ===== В коде можно прыгать между строками. Для этого внутри кода можно ставить jump-метки: <code python> print, "test:" ::test print, "Test" print, "jumping..." jump, "test" </code> Также для jump можно указать конкретный номер строки, но это неудобно, так как код постоянно движется. jump является основной для создания циклов и повторных сегментов кода. **Осторожно!** jump не работает внутри многоуровневых блоков if-else. ===== Сегменты ===== **Осторожно!** Это очень экспериментальный функционал. В сегментах не поддерживаются прыжки и if-else блоки. Сегмент создаётся с помощью << и >>, и у него могут быть аргументы: <code python> <<sayhello, name append, "Hello, ", name print, returned >> # Вызываем сегмент sayhello, "Yakov" </code> Последний вызванный внутри сегмента метод return вернёт значение из сегмента: <code python> <<askname printc, "Say you name: " readline return, returned >> askname append, "Your name is: ", returned print, returned </code>