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 раза) |