6.01.2019 / 20:18 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| OwnLang Desktop 1.4.0Изменения относительно предыдущего релиза. - Добавлены модули downloader, regex - Добавлены функции std::arraySplice, std::default - Добавлена константа OwnLang в модуль std, содержащая метаинформацию о версии языка и платформы - В StreamValue добавлены функции peek, sorted - Возможность импортировать сразу несколько модулей use ["std", "types", "math"] - Поддержка внутренних полей и функций у строк (length, lower, upper, chars, trim(), startsWith(s), endsWith(s), matches(s), contains(s), equalsIgnoreCase(s), isEmpty()). Также доступны автоматические функции расширения: "%d. %s".sprintf(1, "OwnLang") -> sprintf("%d. %s", 1, "OwnLang") - Добавлен kawaii-оператор ^^ для возможного переопределения - Улучшен режим REPL, теперь история команд (клавиша вверх) поддерживается на всех платформах, а по табу теперь всплывают подсказки автодополнения - Немного улучшен вывод ошибок - Обновлены примеры OwnLang v1.4.0Также пакет доступен в AUR: Демонстрация Демонстрация use ["std", "math", "functional", "regex"]
println OwnLang.VERSION
println header("std::default")
x = 0
println default(x, "value")
// Более удобное применение в виде оператора ?:
def `?:`(a, b) = default(a, b)
println false ?: "test"
println true ?: "test"
println "" ?: "test"
println header("kawaii-оператор ^^")
def `^^`(a, b) = "^^%s %s^^".sprintf(a, b)
println "hello" ^^ "world"
println header("regex")
in = "The Beatles Disturbed"
pattern = regex("(\w+) (\w)\w{4}(\w{2}).*(\s\w).(\w\w).*", Pattern.I)
println pattern.replaceCallback(in, def(m) = m.group(2) + "it"
+ m.group(3) + " " + m.group(1) + m.group(4) + "u" + m.group(5))
def header(text) = "\n"
+ ("-" * text.length) + "\n"
+ text + "\n"
+ ("-" * text.length)
__________________
let live Изменено aNNiMON (6.01 / 23:21) (всего 4 раза) |
6.01.2019 / 21:39 | |
Aladdin Пользователь Сейчас: Offline
Имя: Aladdin Откуда: Uzbekistan, Xiva Регистрация: 10.03.2015
| Я в шоке))) столько полезных фич. Annimon ты крут |
6.01.2019 / 23:46 | |
Alexandr Пользователь Сейчас: Offline
Имя: Александр Откуда: Днепр Регистрация: 01.07.2012
| на очереди ведро ) |
18.01.2019 / 01:26 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Обновил документацию. Теперь она будет здесь https://annimon.com/docs/ownlang/Добавил информацию о строковых функциях. __________________
let live |
18.01.2019 / 03:13 | |
Alexandr Пользователь Сейчас: Offline
Имя: Александр Откуда: Днепр Регистрация: 01.07.2012
| aNNiMON, может, сделаешь короткий синтаксис функций, без ключевого слова def? f(x) = x * x;
println f(5)
Изменено Alexandr (18.01 / 03:14) (всего 1 раз) |
18.01.2019 / 03:49 | |
Koenig Модератор форума Сейчас: Offline
Имя: Дмитрий Откуда: Калининград(Koenigsberg) Регистрация: 23.01.2011
| Буду дополнять пост Почитал доку. Join прикольный Нет pregreplace
__________________
Магистр Мёда Изменено Koenig (18.01 / 03:55) (всего 1 раз) |
18.01.2019 / 05:53 | |
Koenig Модератор форума Сейчас: Offline
Имя: Дмитрий Откуда: Калининград(Koenigsberg) Регистрация: 23.01.2011
| Впринципе дока хорошая, местами правда нет описании, но и функционал хороший, думаю надо что то для архивов ещё добавить, для хмл, ини, понравилось ещё функциональщина, правда не все есть, придётся комбинировать, ещё добавить побольше регулярных функции для разного рода данных, сахар короч=) Что то ещё. Сейчас не вспомню __________________
Магистр Мёда |
18.01.2019 / 10:11 | |
Naik Пользователь Сейчас: Offline
Имя: %name% Регистрация: 14.03.2010
| Koenig, Чем scala, groovy, python не подошли?
|
18.01.2019 / 23:06 | |
Koenig Модератор форума Сейчас: Offline
Имя: Дмитрий Откуда: Калининград(Koenigsberg) Регистрация: 23.01.2011
| Всмысле не подошли?
__________________
Магистр Мёда |
19.01.2019 / 01:26 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Alexandr, на твой пост ( #509571) отвечу, скорее всего нет из-за неоднозначностей. f(a, b, c = 30) { return [c, b, a] }Здесь придётся прочитать имя функции, открывающую скобку, все три аргумента, включая дефолтный, закрывающую скобку и только при виде открывающей фигурной скобки можно понять, что это не вызов функции с одновременным присваиванием переменной c числа 30, а именно определение функции. И это хорошо, что в языке просто так блоки { } нельзя писать, иначе совсем нельзя было бы отличить от вызова функции и нового блока. Koenig, вместо пхпшного preg_replace есть replaceAll в std, и regex(...).replace в regex. А насчёт функциональщины, каких функций не хватает? __________________
let live Изменено aNNiMON (19.01 / 01:30) (всего 3 раза) |