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