menu
Меню
Drakon.Tech logo
Drakon.Tech
Начать работу
Документация по Drakon.TechПрограммирование на языке ДРАКОНОсновы программирования в Drakon.TechПривет, мирПеременные и функцииif-else — икона Вопросswitch-case — икона ВыборЦикл foreachЦикл со стрелкой (цикл while)СилуэтКлассыЛямбда-выражения и исключенияПродвинутые темы программированияПримеры игрThe source codeLegacy tutorials (JavaScript 0.2)

Лямбда-выражения и исключения

Ru | En

Исходный код: Lambda

Как создать лямбда-выражение или замыкание

  1. Создайте лямбда-выражение, как обычно в JavaScript.
  2. Не объявляйте переменных.
Лямбда

В замыкании есть доступ ко внешним переменным. Здесь мы читаем переменную a. Мы увидим, что это работает, когда сгенерируем код для модуля и запустим приложение.

18

В данном лямбда-выражении есть присваивание. Ключевое слово var не требуется, потому что Drakon.Tech объявит переменную автоматически.

Имейте в виду, что генератор кода объявит переменную в функции, которая содержит лямбда-выражение, а не в самой лямбде. Это можно увидеть в коде.

function lambda() {
    var a, closure, foo, result;
    a = 10
    closure = function (x) {
        foo = a + x
        return foo
    }
    result = closure(8)
    console.log(result)
}

Что насчёт остальных конструкций языка JavaScript? Можно ли помещать конструкции if и for внутри лямбда-выражений в Drakon.Tech? Технически это возможно, но нежелательно.

Наличие конструкций if и for подразумевает алгоритм с нетривиальной логикой. Для отображения алгоритмов надо применять блок-схемы, а не лямбда-выражения.

А что если надо поместить сложный алгоритм в лямбда-выражение?

  1. Поместите алгоритм в отдельную функцию. Создайте для этого Дракон-схему.
  2. Создайте простое лямбда-выражение в одну строку.
  3. Вызовите функцию из шага 1 в этом лямбда-выражении.

Лямбда-выражения и замыкания обладают огромной выразительной мощью, но за эту мощь приходится платить. Каждый раз, когда читатель наталкивается на лямбда-выражение в коде, ему приходится делать дополнительное мысленное усилие. Старайтесь делать лямбда-выражения как можно проще и короче.

Как поймать исключение

  1. Вставьте конструкцию try-catch внутри иконы Действие, как обычно в программах на JavaScript.
  2. Не объявляйте переменных.
Ловим исключение

Все значение, присвоенные в блоке try-catch будут и далее доступны в функции.

Здесь переменная foo сохранит своё значение после выхода из блока try-catch.

Не применяйте try-catch в async-функциях

Обратите внимание, что Drakon.Tech не разрешает блоки try-catch в async-функциях. Чтобы поймать исключение в async-функции, используйте выражение on error goto X как описано здесь.

Исходный код: Lambda
close
Закрыть
Drakon.Tech logo
Drakon.Tech - начало
Программирование на языке ДРАКОНОсновы программирования в Drakon.TechПродвинутые темы программированияThe source codeLegacy tutorials (JavaScript 0.2)