A lot of times when I am debugging a clojure function in REPL. I end up doing defs for all my lets and if my let is using the destructuring bind than it become a little tedious process. The following macro helps me substitute the let with def+ to define the symbols in my REPL:
(defmacro def+
"def with binding (def+ [{:keys [a b d]} {:a 1 :b 2 :d 3}])"
[bindings]
(let [let-expr (macroexpand `(let ~bindings))
vars (filter #(not (.contains (str %) "__"))
(map first (partition 2 (second let-expr))))
def-vars (map (fn [v] `(def ~v ~v)) vars)]
(concat let-expr def-vars)))
;Example usage:
(def+ [a 1 b 2])
(def+ [{:keys [a b]} {:a 1 :b 2}])
(def+ [z 1
{:keys [a b]} {:a 1 :b 2}])
This should not be used in the final code - though it will work - but probably using in REPL is a better use for this macro.
分享到:
相关推荐
作业说明该作业由几个作业组成,这些作业与解构隔离地进行。... 该项目包含以下文件: destructuring.js运行脚本如果要运行代码,可以通过在终端中输入以下内容来执行此操作: nodemon destructuring.js
前端开源库-babel-plugin-extensible-destructuringBabel插件可扩展销毁,Babel插件可根据https://github.com/vacuumlabs/es-proposals启用可扩展销毁
添加一个plugins部分,并将eslint-plugin-destructuring指定为插件。 然后,启用您要使用的所有规则。 推荐配置 该插件会导出recommended配置,以强制执行所有规则。 您可以如下配置插件: { " plugins " : [ " ...
> var compile = require ( 'es6-destructuring' ) . compile ; [ Function ] > compile ( 'var {x, y} = z;' ) . code ; 'var x = z.x, y = z.y;' 命令行 如果通过npm安装,将提供一个名为es6-destructuring的...
标题 "springboard_10-05_destructuring" 暗示了我们即将探讨的是关于编程中的解构赋值(Destructuring)概念,可能是针对JavaScript或者某种支持类似语法的编程语言。解构赋值是一种从数组或对象中提取值,并直接...
作业说明 该作业由几个作业组成,这些作业与解构隔离地进行。 要创建分配,您可以克隆分配或将其下载到您自己的计算机上。 该项目包含以下文件: destructuring.js ... nodemon destructuring.js
【CSharp 编写的人品测试器】 CSharp是一种基于.NET框架的编程语言,以其简洁、类型安全和面向对象的特点而被广泛应用于各种软件开发,包括桌面应用、Web应用以及游戏开发等。在这个项目中,"人品测试器"是一个用...
Whether you’re writing frontend applications or server side code, the phenomenal features from ES6 and beyond – like the rest operator, generators, destructuring, object literals, arrow functions, ...
1) ES6 demo Destructuring and TemplateLiteral: AssertionError: # test/demo_test.js:7 assert(`${ alice.name } and ${ bob.name }` === `bob and alice`) | | | | | | | | | | | | | "bob and alice" | | |
- 解构赋值(destructuring)使得从数组和对象中提取数据变得更加简单。 本书籍的结构分为几个部分: - 第一部分介绍函数式编程的基础概念,帮助读者理解函数式编程的思维模式。 - 第二部分重点介绍如何使用...
在CodeSandbox上,你可以创建一个新的项目,导入相关文件(如`ES6-Destructuring-Assigment-master`中的文件),然后逐步实现和测试上述解构赋值的示例。这样不仅可以加深理解,还能实际操作,体验解构赋值带来的...
JavaScript中的解构赋值(Destructuring Assignment)是ES6引入的一种强大且便捷的语法特性,它允许我们从数组或对象中提取数据,并将其赋值给新的变量。在这个"JavaScript_Destructuring_Predictions"练习中,我们...
我们经常可以在其他编程语言(如GO语言)中看到多返回值这种特性,因为在很多实际场景中,函数的返回值中,函数的返回值并不只有一个单一的值。ES6之前,并没有可以直接使用语法来实现多返回值的特性。...
Learning [removed] The non-boring beginner’s guide to modern (ES6+) JavaScript programming Vol 1: The language core By 作者: Marco Emrich – Christin Marit ...Appetite for Destructuring