Самая большая общность, которую Вы найдете на функциональных языках, использует функции, чтобы хранить данные. Это немного похоже на функции средства доступа использования на объекте без объекта. Вместо этого функция создается в среде, где она имеет доступ к данным, ей нужно. Теперь эта функция может передаваться и использоваться где угодно и все еще сохранить способность использовать данные.
Вот очень простой пример. Это не чисто функционально, поскольку это действительно изменяет состояние, но это достаточно распространено:
(define (make-counter)
(let ((count 0))
(lambda ()
(set! count (+ count 1))
count)))
(define x (make-counter))
(x) returns 1
(x) returns 2
...etc...
, Таким образом, у нас есть функция, делать-счетчик, который возвращает другую функцию, которая имеет состояние счетчика внутри. Мы можем назвать тот недавно созданный счетчик и наблюдать изменение внутри.
Это - то, как структурированы функциональные программы. У Вас есть функции, которые берут функции в качестве аргументов, у Вас есть функции, которые возвращают функции со скрытым состоянием и т.д. Это весь намного более чисто, чем руководящая память самостоятельно.
если вы дважды щелкните сразу после открытия {
функции, вы выберете все тело функции.
Затем вы можете:
Конечно, это ярлык, который вы описываете в своем вопросе, и перемещение функции только на одну строку может привести к неправильному коду (так как функция может оказаться внутри другой).
Вы должны повторить сочетание клавиш соответствующее количество раз, чтобы фактически переместить функцию до или после другой.
Итак, ответ: нет, не совсем как IDEA, но достаточно близко.
На самом деле, если вид схемы не отсортированы в алфавитном порядке, вы можете перетащить функции, чтобы изменить их порядок.
Но это не ярлык.
Если вы можете позволить себе использовать мышь, вы можете сделать это в режиме просмотра контура. Это будет проще всего.