OwnLang Desktop 1.5.0 - Добавлены модули zip, gzip, okhttp
- Добавлены функции std::getBytes, std::stringFromBytes, std::stripMargin
- В forms добавлены JProgressBar, JTextArea, JScrollPane, методы для JButton, JTextField и WindowListener
- В functional::stream добавлена функция joining
- Добавлены свойства и функции для массивов: arr.length, arr.isEmpty(), arr.joinToString(...)
- Добавлен оператор объединения с null
?? (null coalesce)
- Добавлены классы (пока без наследования, как структура)
- Строгое преобразование строк в числа (раньше int("test") выдавало 0, а теперь ошибку)
- В for теперь можно итерировать строки и массивы с индексом:
for ch : "test" for ch, code : "test" for el : arr for el, index : arr - В jsonencode можно задать отступ для читабельного форматирования:
jsonencode(obj) — минифицированный json
jsonencode(obj, 2) — pretty-print с отступом в 2 пробела
- Возможность задать параметры парсера/дампера yaml
- Исправлено подключение к mysql в модуле jdbc
- Исправлен str::range для реверсивных промежутков
- Исправлена функция files::readBytes с заданными offset и length
- Исправлен поиск подходящего конструктора класса в java::new, так же можно инстанцировать класс через оператор new
- Другие мелкие изменения
OwnLang v1.5.0Демонстрация
Демонстрация
use "std"
str = "123
|456
|789".stripMargin("|")
println str
obj = {"a": {"b": 12}}
println obj.b ?? 1
println obj.a.b ?? 2
println obj.test1.test2 ?? 3
arr = [123, 456, 789]
println arr.joinToString(", ")
class Point {
def Point(x, y) {
this.x = x
this.y = y
}
def move(dx, dy) {
this.x += dx
this.y += dy
}
def info() = "[" + this.x + ", " + this.y + "]"
}
a = new Point(10, 12)
println a.info()
b = new Point(2, 4)
a.move(b.x, b.y)
println a.info()
use "json"
data = {"xyz": 123, "uvw": 456, "rst": 789}
println jsonencode(data)
println jsonencode(data, 2)
Также посмотрите на офигенский проект от
@vlavolk:
audiofold — телеграм бот для сохранения музыки на локальный диск целиком на OwnLang
__________________