`
heoxsoft
  • 浏览: 12949 次
  • 性别: Icon_minigender_1
  • 来自: 潍坊
最近访客 更多访客>>
社区版块
存档分类
最新评论

Destructuring binding in def

阅读更多

原始链接:http://clojure101.blogspot.com/2009/04/destructuring-binding-support-in-def.html


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

    作业说明该作业由几个作业组成,这些作业与解构隔离地进行。... 该项目包含以下文件: destructuring.js运行脚本如果要运行代码,可以通过在终端中输入以下内容来执行此操作: nodemon destructuring.js

    前端开源库-babel-plugin-extensible-destructuring

    前端开源库-babel-plugin-extensible-destructuringBabel插件可扩展销毁,Babel插件可根据https://github.com/vacuumlabs/es-proposals启用可扩展销毁

    eslint-plugin-destructuring:与ES2015解构有关的Eslint规则

    添加一个plugins部分,并将eslint-plugin-destructuring指定为插件。 然后,启用您要使用的所有规则。 推荐配置 该插件会导出recommended配置,以强制执行所有规则。 您可以如下配置插件: { " plugins " : [ " ...

    es6-destructuring:ES6 解构到基于 ES5 重铸的变换

    > 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

    标题 "springboard_10-05_destructuring" 暗示了我们即将探讨的是关于编程中的解构赋值(Destructuring)概念,可能是针对JavaScript或者某种支持类似语法的编程语言。解构赋值是一种从数组或对象中提取值,并直接...

    frontend-javascript-destructuring:edhub 6.5

    作业说明 该作业由几个作业组成,这些作业与解构隔离地进行。 要创建分配,您可以克隆分配或将其下载到您自己的计算机上。 该项目包含以下文件: destructuring.js ... nodemon destructuring.js

    CSharp 编写的人品测试器

    【CSharp 编写的人品测试器】 CSharp是一种基于.NET框架的编程语言,以其简洁、类型安全和面向对象的特点而被广泛应用于各种软件开发,包括桌面应用、Web应用以及游戏开发等。在这个项目中,"人品测试器"是一个用...

    Rediscovering JavaScript

    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, ...

    babel-plugin-espower:用于电源确认的Babel插件

    1) ES6 demo Destructuring and TemplateLiteral: AssertionError: # test/demo_test.js:7 assert(`${ alice.name } and ${ bob.name }` === `bob and alice`) | | | | | | | | | | | | | "bob and alice" | | |

    Functional Programming in JavaScript

    - 解构赋值(destructuring)使得从数组和对象中提取数据变得更加简单。 本书籍的结构分为几个部分: - 第一部分介绍函数式编程的基础概念,帮助读者理解函数式编程的思维模式。 - 第二部分重点介绍如何使用...

    ES6-Destructuring-Assigment:使用CodeSandbox创建

    在CodeSandbox上,你可以创建一个新的项目,导入相关文件(如`ES6-Destructuring-Assigment-master`中的文件),然后逐步实现和测试上述解构赋值的示例。这样不仅可以加深理解,还能实际操作,体验解构赋值带来的...

    JavaScript_Destructuring_Predictions:练习预测JavaScript中对象和列表的结构化结果

    JavaScript中的解构赋值(Destructuring Assignment)是ES6引入的一种强大且便捷的语法特性,它允许我们从数组或对象中提取数据,并将其赋值给新的变量。在这个"JavaScript_Destructuring_Predictions"练习中,我们...

    ES6基础之解构赋值(destructuring assignment)

    我们经常可以在其他编程语言(如GO语言)中看到多返回值这种特性,因为在很多实际场景中,函数的返回值中,函数的返回值并不只有一个单一的值。ES6之前,并没有可以直接使用语法来实现多返回值的特性。...

    Learning [removed] JavaScript programming Vol 1: The language core

    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

Global site tag (gtag.js) - Google Analytics