gpt4 book ai didi

clojure - 如何在 clojure 中以编程方式创建多个编译时定义?

转载 作者:行者123 更新时间:2023-12-02 13:50:05 25 4
gpt4 key购买 nike

我想在编译时在一个文件中创建多个定义,而不必输入所有内容。我想做这样的事情:

(ns itervals)

(loop [i 0]
(if (<= i 128)
(do
(def (symbol (str "i" i)) i)
(recur (+ i 1)))))

这样,我们就在当前上下文中定义了变量 i1,..., i128。如果不明确定义它们,我无法找到在编译时执行此操作的方法。我认为宏可能是可行的方法,但我不知道如何实现。

最佳答案

这感觉更像是编译时间:

(defmacro multidef[n]   
`(do ~@(for [i (range n)]
`(def ~(symbol (str "i" i)) ~i))))

(multidef 128)

i0 ; 0
i127 ; 127
i128 ; unable to resolve

但我想不出可以区分两者的测试,所以也许这种区别是错误的。

关于clojure - 如何在 clojure 中以编程方式创建多个编译时定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4720962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com