- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
function main() {
let { aa, bb } = { aa: 10, bb: 20 };
print(aa + bb);
let {
aa,
bb: { q, r },
} = { aa: 10, bb: { q: 1, r: 2 } };
assert(aa == 10, "{}");
assert(q == 1, "{}");
assert(r == 2, "{}");
let { x, y } = new ObjF(1, "foo");
assert(x == 1, "{}");
assert(y == "foo", "{}");
print("done.");
}
В приличных домах это называют pattern matching
> let { x, y } = new ObjF(1, "foo");
Счастливого рефакторинга.
let {x1, y1} = f1();
let {x2, y2} = f2();
А с туплой {int, int} оно по позициям что ли будет работать, забив на имена?!
Или есть мудацкий синтаксис
правда я не буду его имплементировать пока, потому что у меня пока undefined - это тупая симуляция
2) Продавать пивас студию для TypeScript'а, которая эту фичу запрещает
Например, в «Бейсике» в левой части можно было использовать строковые функции:
Программа выведет слово «ВИТЯ»
Помню, можно было использовать слайсы для строк (функции MID$, LEFT$, RIGHT$) и, кажется, изменять длину строки (функция LEN). Дальше создатели «Бейсика» не пошли.
А если бы развили эту мысль, было бы круто: декомпозиция, паттерн-матчинг, решение уравнений...
У уравнений есть проблемы:
1. У квадратного уравнения два корня.
2. Многие уравнения нельзя обратить аналитически, а у решения методом итераций есть проблема останова.
https://youtu.be/83mLcBxZDPM
https://youtu.be/UidYoYqtlds
Вообще охуенное произведение же:)
Боль прошла только после того, как я подтерся шляпой пажа, украшенной перьями на швейцарский манер.
- Оправился я от этого только на другой день, после того как подтерся перчатками моей матери, надушенными этим несносным, то бишь росным, ладаном.
Подтирался я еще шалфеем, укропом, анисом, майораном, розами, тыквенной ботвой, свекольной ботвой, капустными и виноградными листьями, проскурняком, диванкой, от которой краснеет зад, латуком, листьями шпината, - пользы мне от всего этого было, как от козла молока, - затем пролеской, бурьяном, крапивой, живокостью, но от этого у меня началось кровотечение, тогда я подтерся гульфиком, и это мне помогло.
Затем я подтирался простынями, одеялами, занавесками, подушками, скатертями, дорожками, тряпочками для пыли, салфетками, носовыми платками, пеньюарами. Все это доставляло мне больше удовольствия, нежели получает чесоточный, когда его скребут.
Тот весь обрызган желтой влагой *.
- Что я слышу? - воскликнул Грангузье. - Ах, озорник ты этакий! Тишком, тишком уже и до стишков добрался?
https://www.theblaze.com/news/kilt-man-antique-rectum-arrest
Перевод:
https://www.mk.ru/social/2024/02/20/muzhchina-v-yubke-pryatavshiy-v-anus-tovary-zaderzhan-policiey.html
https://youtu.be/aNfIkC-_mu0
Либо делать fork, либо интерпретировать код как do-нотацию монады List (строчки программы как бы умножаются декартово)
Либо будет implementation defined и возвращать какое-то одно значение. Это вообще универсальный вариант. Поскольку форкнуться на 2 корня уравнения x: x^2-1=0 просто, а форкнуться на континуум корней уравнения x: 0=0 чуть сложнее.
> нельзя обратить аналитически
Бросать исключение или ошибку компиляции, если в тот момент известно?
> проблема останова
Не так важно с точки зрения языка. Пусть пердолятся программисты/пользователи.
Жаль, в «Бейсике» не было слайсов для массивов, был только доступ к отдельному элементу.
это вызывает охуение у большинства питухов
Это как в сишке, если getFoo() возвращает указатель, то можно *(getFoo()) = 42;
lvalue.
Создаёт временную переменную и производит декомпозицию.
Это есть примерно во всей скриптушне и в котлине еще вроде
только мной никто не интересуется и арбузов у меня нет, а так один в один!
https://ideone.com/crF1zG
(foo, bar) = goBar()
https://tjournal.ru/tech/420240-inzhener-google-yadro-linux-slishkom-opasno-dlya-android-iz-za-slozhnosti-i-rosta-uyazvimostey-ego-nuzhno-peredelyvat?from=rss
– ебать ты олд