std

Содержит вспомогательные функции общего назначения

Константы

ARGS : string desktop = command-line arguments

OwnLang : map = {PLATFORM=android/desktop, VERSION=2.0.1_000000, VERSION_MAJOR=2, VERSION_MINOR=0, VERSION_PATCH=1}

Функции

arrayCombine(keys, values) — создаёт объект на основе двух массивов

arrayKeyExists(key, map) — проверяет, содержится ли ключ key в объекте map. 1 - содержится, 0 - нет

arrayKeys(map) — возвращает массив ключей карты

arraySplice(array, start, deleteCount = length(array) - start, additions = []) — возвращает новый массив с удалёнными deleteCount элементами, начиная с позиции start и/или добавляет новые элементы с позиции start

arrayValues(map) — возвращает массив значений карты

charAt(input, index) — возвращает код символа в позиции index строки input

clearConsole() android — очищает консоль

default(a, b) 1.4.0 — возвращает значение a, если оно не пустое, иначе возвращается значение b

use std

user = {"name": "", "lastname": "Иванов"}
name = default(user.name, "Имя неизвестно")
lastname = default(user.lastname, "фамилия неизвестна")
println name + " " + lastname // Имя неизвестно Иванов

echo(arg...) — выводит значения в консоль, разделяя их пробелом, а потом ставит перенос строки. Может принимать переменное значение аргументов

use std

echo(1, "abc") // выведет строку "1 abc" в консоль
echo(1, 2, 3, 4, 5, "a", "b") // выведет строку "1 2 3 4 5 a b" в консоль"

exit(status) 2.0.0 — завершает работу приложения с заданным кодом. Ненулевое значение означает завершение с ошибкой

use std

println "До свидания!"
exit(0)

getBytes(input, charset = "UTF-8") 1.5.0 — возвращает массив байт строки в заданной кодировке

getenv(key, defaultValue = "") 2.0.0 — возвращает значение указанной переменной среды, если такова существует. В противном случае возвращает defaultValue

use std
println getenv("JAVA_HOME")

getprop(key, defaultValue = "") 2.0.0 — возвращает значение системного свойства, если оно существует. В противном случае возвращает defaultValue

indexOf(input, what, index = 0) — поиск первого вхождения подстроки what в строке input, начиная с позиции index

join(array, delimiter = "", prefix = "", suffix = "") — объединяет массив в строку с разделителем delimiter, префиксом prefix и суффиксом suffix

lastIndexOf(input, what, index = 0) — поиск последнего вхождения подстроки what в строке input, начиная с позиции index

length(x) — возвращает длину строки, размер массива/объекта или количество аргументов функции в зависимости от типа аргумента x

nanotime() 2.0.0 — возвращает время виртуальной машины в наносекундах, для отсчёта затраченного времени

newarray(size...) — оздаёт массив с размером size. Если указать 1 аргумент - создаётся одномерный массив, если 2 аргумента - двухмерный и т.д

use std

println newarray(4) // [0, 0, 0, 0]
println newarray(2, 3) // [[0, 0, 0], [0, 0, 0]]

parseInt(str, radix) — преобразует строку в целое число с указанным основанием

parseLong(str, radix) — преобразует строку в длинное целое число с указанным основанием

parseDouble(str) 2.0.0 — преобразует строку в вещественное число типа double

rand(from = 0, to = ..) — возвращает псевдослучайное число. Если вызвать функцию без аргументов, возвращается вещественное число от 0 до 1. Если указан один аргумент - возвращается целое число в диапазоне [0...значение). Если указаны два аргумента - возвращается псевдослучайное число в промежутке [from...to)

range(from = 0, to, step = 1) — создаёт массив с элементами числового промежутка. Элементы вычисляются по мере их использования, так что в цикле foreach можно использовать любые промежутки. range(to) - создаёт промежуток от 0 до to (не включительно) с шагом 1 range(from, to) - создаёт промежуток от from до to (не включительно) с шагом 1 range(from, to, step) - создаёт промежуток от from до to (не включительно) с шагом step

use std

println range(3) // [0, 1, 2]
r = range(-5, 0) // [-5, -4, -3, -2, -1]
println r[0] // -5
println r[2] // -3
for x : range(20, 9, -5) {
  println x
} // 20 15 10

readln(x) desktop — чтение строки из консоли

replace(str, target, replacement) — заменяет все вхождения подстроки target на строку replacement

replaceAll(str, regex, replacement) — заменяет все вхождения регулярного выражения regex на строку replacement

replaceFirst(str, regex, replacement) — заменяет первое вхождение регулярного выражения regex на строку replacement

sleep(time) — приостановка текущего потока на time миллисекунд

sort(array, comparator = ..) — сортирует массив. Если задана функция comparator, то сортировка будет производится на основе результата функции сравнения

split(str, regex, limit = 0) — разделяет строку str по шаблону regex и помещает элементы в массив. Если указан параметр limit, то будет произведено не более limit разбиений, соответственно размер результирующего массива будет ограничен этим значением limit

use std

println split("a5b5c5d5e", "5") // ["a", "b", "c", "d", "e"]
println split("a5b5c5d5e", "5", 3) // ["a", "b", "c5d5e"]

sprintf(format, args...) — форматирует строку

stringFromBytes(input, charset = "UTF-8") 1.5.0 — возвращает строку из массива байт в заданной кодировке

stripMargin(input, marginPrefix = "|") 1.5.0 — обрезает начальные пробелы, сопровождаемые marginPrefix в каждой строке, и удаляет первую и последнюю строки, если они пустые

use std

println "
        |123
        |456
        ".stripMargin() // "123\n456"

substring(str, startIndex, endIndex = ..) — обрезает строку str, начиная от символа после позиции startIndex и по endIndex. Если endIndex не указан, обрезается до конца строки

use std

println substring("abcde", 1) // bcde
println substring("abcde", 2, 4) // cd

sync(callback) — делает асинхронный вызов синхронным

use std, http

url = "https://whatthecommit.com/index.txt"
result = sync(def(ret) {
   http(url, def(t) = ret(t))
})
println result

thread(func, args...) — создаёт новый поток и передаёт параметры, если есть.

func - функция, ссылка на функцию (::function) или имя функции ("function")

args - 0 или более аргументов, которые необходимо передать в функцию func

use std

thread(def() {
  println "New Thread"
})

thread(::newthread, 10)
thread("newthread", 20)

def newthread(x) {
  println "New Thread. x = " + x
}

time() — возвращает текущее время в миллисекундах начиная с 1970 года

toChar(code) — переводит код символа в строку

use std

println toChar(48) // "0"

toHexString(number) — конвертирует число в строку с шестнадцатиричным представлением

toLowerCase(str) — переводит все символы строки в нижний регистр

toUpperCase(str) — переводит все символы строки в верхний регистр

trim(str) — обрезает пробельные невидимые символы по обоим концам строки

try(unsafeFunction, catchFunction = def(type, message) = -1) — подавляет любые ошибки в unsafeFunction и возрвщает результат функции catchFunction, если была ошибка

use std

println try(def() = "успех") // успех
println try(def() = try + 2) // -1
println try(def() = try(), def(type, message) = sprintf("Обработана ошибка:\nтип: %s\nсообщение: %s", type, message))
println try(def() = try(), 42) // 42