我是clojure的绝对初学者。我有clojure1.6和lein(我使用ubuntu 15.04)。如何运行我使用终端创建的clojure文件?是否有像clojure file.clj
这样的命令?感谢您的帮助!
答案 0 :(得分:10)
简单的回答:
如果'clojure'是将运行Clojure的脚本或别名(通过使用适当的命令行参数运行java),并且“foo.clj”是您的Clojure源文件的名称,那么您只需输入
clojure foo.clj
如果这不起作用,那是因为你的路径中没有这样的脚本,但你可以制作一个内容如下所示的脚本:
#!/bin/sh
java -cp /usr/lib/clojure-1.6.0.jar clojure.main "$@" -r
您需要确定Clojure jar文件的位置,并在-cp
之后替换该块。使用Leiningen,你可能在〜/ .m2下有这个文件的某个版本。
如果您启动Clojure并获得REPL提示,则可以输入:
(load-file "foo.clj")
或
(load-file "<path to foo.clj>/foo.clj")
好的答案:
见Shlomi和Daniel Compton的答案。
当您开始使用Clojure时,关于如何设置目录结构和文件名以便轻松使用Leiningen和Clojure,可能会有一些学习曲线。 (如果你对Java有所了解,这有点容易。)但是,一旦你熟悉了Leiningen的project.clj文件以及如何设置源文件和命名空间(在你了解命名空间之后!),在与仅使用-m
和load-file
相比,传统方式可以让您更轻松地使用Clojure。 (Clojure非常适合开发小型或大型项目,而不是运行一次性脚本.Clojure需要很长时间才能用作脚本语言,而Leiningen需要更长的时间。)
答案 1 :(得分:8)
$ lein run -m my.namespace # run the -main function of a namespace
答案 2 :(得分:5)
您应该阅读Leiningen readme和tutorial,或者按照您喜欢的编辑器的简单教程进行阅读。
答案 3 :(得分:3)
首先,Clojure程序员倾向于比运行独立文件更频繁地使用REPL。但是,如果您确实想要运行文件,我建议Boot快速破解。
Unix的安装说明在Github Boot project page上。安装Boot后,创建一个名为using System;
using System.Threading.Tasks;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
SimulateTenButtonClicks();
Console.ReadKey();
}
private static async void SimulateTenButtonClicks()
{
var foo = new Foo();
for (var i = 0; i < 10; i++)
{
var result = foo.DoStuff(i);
Console.WriteLine(await result);
}
}
public class Foo
{
public async Task<string> DoStuff(int i)
{
await Task.Delay(500); // simulate load
return await Task.Run(() =>
{
return String.Format("I have been hit {0} times", i);
});
}
}
}
}
的文件,其中包含:
main.boot
然后使其可执行并运行它:
#!/usr/bin/env boot
(defn -main [& args]
(println "Hello world!")
(System/exit 0))
答案 4 :(得分:0)
java -cp clojure-1.7.0.jar clojure.main -i file.clj
假设已安装Java,并且clojure-1.7.0.jar
文件和file.clj
都在当前目录中
如果最终需要将其他jar文件用于库等,则最终将变得不堪重负。那时,您可能需要研究靴子,Maven或Leiningen。大多数人似乎都在使用leiningen,但这会使我的头发着火。