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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • hash 哈希算法_哈希一致性算法

    hash 哈希算法_哈希一致性算法文章目录一、哈希函数定义特点应用常见哈希算法二、murmurhash定义特点应用介绍三、MurmurHash使用四、性能测试MurmurHash:(multiplyandrotate)and(multiplyandrotate)Hash,乘法和旋转的hash算法。一、哈希函数定义散列函数(英语:Hashfunction)又称散列算法、哈希函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合

    2022年10月18日
    9
  • 手把手教你制作一款iOS越狱App,伪装微信位置

    手把手教你制作一款iOS越狱App,伪装微信位置说明缘由声明概念越狱的原理iOS目录层级结构iOS程序类型准备工作硬件设备辅助软件Mac需要的工具iOS需要使用的辅助开发工具逆向过程静态分析给App砸壳使用IDA静态分析动态调试iOS工程目录制作TweakTweak是什么了解Theos安装iOSOpenDev制作AppApp和Tweak通信交换数据App如何加载TweakApp如何

    2022年5月29日
    97
  • pycharm 断点调试失效[通俗易懂]

    pycharm 断点调试失效[通俗易懂]pycharm断点调试失效,再第一行执行代码打了断点,Debug之后还是全部运行,但是在其他行打断点就可以正常调试。试了好多其他博主写的方法,都没用,最后发现是因为第一行是注释,把第一行的注释移到下面或第一行可执行代码的后面就可以调试了…

    2025年7月23日
    3
  • {“error”:”0″}_lnk2019无法解析的外部符号_public

    {“error”:”0″}_lnk2019无法解析的外部符号_public文章对“errorLNK2019:无法解析的外部符号,该符号在函数_main中被引用”的原因进行分析,并提供了解决方法。

    2022年10月6日
    0
  • 新浪股票接口获取历史数据

    新浪股票接口获取历史数据这两天做了一个调用新浪股票接口获取实时以及历史股票数据的应用,因为新浪没有公开关于其接口的官方文档,所以通过各种百度差了很多关于新浪股票接口的使用,不过大家基本都是转载或者直接复制,对于实时数据的获取讲的很详细,但是缺少获取历史数据的方法。关于实时数据的获取大家可以看这篇博客:实时股票数据接口 经过不懈的努力终于再这篇博文中找到了关于新浪股票历史数据的获取方式腾讯股票接口、和讯网股票接口、新浪股票…

    2022年6月24日
    115
  • java实现万年历[通俗易懂]

    java实现万年历[通俗易懂]万年历代码实现packagecom.zll;​importjava.util.Scanner;​/***总结:遇到的bug把传入判断年份的日期都传成输入的year了,应该传入要计算的每一年

    2022年7月2日
    36

发表回复

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

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