clojure-repl的使用套路

clojure-repl的使用套路

clojure 提倡交互式开发,交互离不开REPL. 下面是介绍repl的使用过程

本文介绍所需以下 
1 任意编辑器
2lein

使用lein模板新建一个clojure项目

在命令行下输入

$ lein new repl-test

lein会使用默认模板创建clojure项目 目录如下

repl-test/
├── CHANGELOG.md
├── LICENSE
├── README.md
├── doc
│   └── intro.md
├── project.clj
├── resources
├── src
│   └── repl_test
│       └── core.clj
└── test
    └── repl_test
        └── core_test.clj

core.clj中内容

(ns repl-test.core)

(defn foo
  "I don't do a whole lot."
  [x]
  (println x "Hello, World!"))

进入项目跟目录 启动repl

$ cd repl-test
$ lein repl

看到 user=>说明启动成功了

我想调用下core.clj中的foo函数

输入 (foo “diqye”) 会报错  foo不在当前环境中   因为当前环境不在repl-test.core命名空间中

切换命名空间并require

user=> (in-ns 'repl-test.core)

看到 repl-test.core=>  就切换成功了
require

repl-test.core=> (require 'repl-test.core)

执行 (foo “diqye”) 会看到
diqye Hello, World!

修改core.clj文件

core.clj

(ns repl-test.core)

(defn foo
  "I don't do a whole lot."
  [x]
  (println x "hello, clojure!"))

想要运行修改后的 foo需要load-file

repl-test.core=> (load-file "src/repl_test/core.clj")
#'repl-test.core/foo
repl-test.core=> (foo "diqye")
diqye hello, clojure!
nil
repl-test.core=> 

不重启repl 增加第三方依赖 data.json

这个没有找到合适的方法去做,目前可以通过一个 库去做 https://github.com/clojure/tools.namespace

user=> (require ‘[clojure.tools.namespace.repl :refer [refresh]])

user=>(refresh) 会自动检测项目文件变化并加载

但是并不会自动加载project.clj新增的依赖项,只能重启repl

转载于:https://my.oschina.net/diqye/blog/728839

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/108918.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • js Map对象的用法[通俗易懂]

    js Map对象的用法[通俗易懂]第一篇:Map:Map是一组键值对的结构,具有极快的查找速度。举个例子,假设要根据同学的名字查找对应的成绩,如果用Array实现,需要两个Array:varnames=[‘Michael’,’Bob’,’Tracy’];varscores=[95,75,85];给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应…

    2025年9月16日
    9
  • 我的世界java手机_我的世界java手机版

    我的世界java手机_我的世界java手机版我的世界java手机版是一款非常好玩的模拟经营游戏,游戏非常的自由,你几乎可以在游戏中干任何事,你可以自己建造一个世界,或是制作一个像素版的动漫人物,你还可以探索这个世界,寻找资源,你还可以和好友一起在这里进行对抗,你还在等什么,赶快来体验吧!我的世界java手机版游戏特色没有华丽的画面,没有什么游戏特效但是它最大的优势就是在于它的游戏性玩家在一个完全开放的世界,可以完全按照自己的想法建造我的世界…

    2022年7月8日
    20
  • grep 命令详解_grep命令详解

    grep 命令详解_grep命令详解一:grep命令的基本概念和用途grep命令是linux中一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。在一个或多个文件中搜素字符串模式,如果字符串模式包括空格,也必须被引用,模式后的所有字符串被看作文件名。搜索的结果被送到标准输出(stdout),不影响原文件内容。grep也可以用于shell脚本,因为grep通过返回一个状态值来说明搜索的结果,如果模式搜索成功,则返回0;如果搜索不成功,则返回1;如果搜索的文件不存在,则返回2;我们利用这些返回值就可以进行一些自动化的文

    2022年8月30日
    5
  • pycharm 激活码 永久 2021【中文破解版】

    (pycharm 激活码 永久 2021)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月22日
    66
  • 新东方app直播课_新东方录播课和直播课

    新东方app直播课_新东方录播课和直播课峰值人数达到10.8万,直播商品数共125件,直播销量19.8万件,直播销售总额达到1534.3万元,相较首播成绩翻了近三倍。假设按照目前粉丝日增70-80万人,若衰减速率不高,则在未来2周东方甄选粉丝数量有望达到千万人。…

    2025年11月3日
    2
  • 在Spring AOP切面中启用新事务

    在Spring AOP切面中启用新事务在工作中有一个在切面中需要记录一下操作日志的需求,而且要求这些操作日志要存入数据库,并且无论业务层有什么异常,日志照常记录,那就不能沿用业务层的事务,而是需要新启一个事务了。sping的声明式事务就是靠AOP来实现的,一般事务都在业务层中启用,那如果要在AOP的逻辑中启用一个新的事务要怎么做呢?比如下面的例子://定义一个切点,这里指com.lidehang.remote包下所有的类的方法…

    2022年7月27日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号