Что происходит здесь:Clojure деструктурирующий возвращает странные вещи
(defn what [[a]]
(print a b))
теперь, если я называю (what "abid")
я получаю:
a [1 2 3 4 5]
Откуда это взялось? какие цифры?
Что происходит здесь:Clojure деструктурирующий возвращает странные вещи
(defn what [[a]]
(print a b))
теперь, если я называю (what "abid")
я получаю:
a [1 2 3 4 5]
Откуда это взялось? какие цифры?
Вы б определены точно, прежде чем определить эту функцию, в противном случае вы получите
CompilerException java.lang.RuntimeException: Unable to resolve symbol: b in this context, compiling:(NO_SOURCE_PATH:4:3)
попробовать свой код в новом Clojure REPL с ничего в нем. И b является источником этих магических чисел.
т.д .:
(def b 5)
(defn what [[a]]
(print a b))
(what "abc")
a 5nil
Предполагая, что b
определяется как [1 2 3 4 5]
где-то, это работает точно, как я ожидаю, что это. Так как b
иначе не указано в коде, который вы дали, мы можем только предположить, что это так.
a
- первый элемент первого параметра, равный what
. Для (what "abcd")
это нижний регистр «a».
достаточно уверен, что вы тестируете в repl, и у вас есть «глобальный» _b_, установленный в [1 2 3 4 5]. если вы eval _b_ на вашем реплике не это '[1 2 3 4 5]'? –
Согласен. Пространство имен, вероятно, «опробовано». – sloth
Что значит «проголосовать»? – amirteymuri