охватывать отсутствие «подъемника» в Clojure

StackOverflow https://stackoverflow.com/questions/5490324

  •  14-11-2019
  •  | 
  •  

Вопрос

Я нашел несколько раз, когда у меня есть группа взаимосвязей связанных функций, и как я, естественно, поместите их в файл, в конечном итоге конфликтуют с их зависимостями (т. Е. Функция 1 зависит от функции 2, но вышеуказано).Когда я пишу код, я обычно сохраняю оценку выражений верхнего уровня, и оцениваю только весь файл для обновления зависимости от Refs или Whatnot.Я нахожу это довольно часто, я заканчиваю конфликтом на зависимостью, и в конечном итоге, чтобы жонглировать кучу функций вокруг.

на других языках, которые я знаю, как только вы объявите функцию, она становится «подниматься» за кулисами, как будто оно появилось перед чем-либо еще.Таким образом, вам не нужно беспокоиться о порядке вещей в вашем коде, и может лечить функции как модульные биты кода.Это отсутствие этой черты, которая удерживает меня в Cljure.Я делаю что-то неправильно?Более незначительное раздражение, то огромное дело, это то, что вы просто привыкли обращать внимание?

Это было полезно?

Решение

declare solves this problem nicely

declare
macro
Usage: (declare & names)
defs the supplied var names with no bindings, useful for making forward declarations.
Added in Clojure version 1.0

you can avoid juggling the function order by adding a declare statement to the start of your namespace

(declare fun1 fun2 fun3)

(defn fun3 [] (fun1))
(defn fun1 [] (fun2))
(defn fun2 [] 42)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top