variables - 如何在 Clojure 宏中绑定(bind)变量?

标签 variables binding clojure macros cursive

我正在尝试编写一个宏,它接受一个绑定(bind)向量和一个可以访问这些绑定(bind)的函数。以最简单的形式:

(defmacro f-with-binds [binds f]
  `(let [~@binds]
     ~f))

即使上述方法有效:
(f-with-binds [n 123 m 456] (println n m)) ;; => 123 456

我对此不满意,因为 Cursive 将 nm 突出显示为未声明的变量,这对于 forlet 之类的宏不会发生。如何改进我的实现?

ps.:真正的宏返回一个传感器 - 绑定(bind)是传感器的状态,函数是传感器的阶跃函数

最佳答案

取自@superkonduktr 评论:

这是 Cursive 中的一个已知问题,目前是 worked on .目前唯一的补救措施似乎是在 beta 版本 1.3.0-eap1 中,您可以在其中指示 Cursive 解析宏 as if it was a let 中的绑定(bind)。 .另一种解决方案是完全禁用突出显示未解析的符号(设置 → 语言和框架 → Clojure → 突出显示未解析的符号)。

关于variables - 如何在 Clojure 宏中绑定(bind)变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37481377/

相关文章:

arrays - Powershell 范围 : variable array within loop not populating when adding to second array

c# - WPF : MvvmLight, 用户控件,绑定(bind)

ajax - SproutCore 的 "Binding"功能是否允许小部件发起对服务器的调用以获取数据?

clojure - clojure a 与非标准迭代 java API 的互操作

hash - 简单的 Clojure 澄清重新 : hashes/values

algorithm - 如何生成表示 'e' 二进制扩展的系列

javascript - 在不同的方法中使用时变量是 "undefined"?

php - 未解析基本语法的解决方法

javascript - 带变量的 Jquery eq 选择器不起作用

c# - 转换器不能应用于需要 IValueConverter 类型的属性