在卢阿,我可以这样做:
a.lua:
return 1+2
b.lua:
print(dofile('a.lua'))
我的问题是:这种事情(使用像函数这样的文件)在计算机科学中是否有一个标准化的名称?除了lua之外还有哪些语言支持它?特别是,你能在Clojure做这样的事吗? (或Lisp)
答案 0 :(得分:2)
(eval (read-string "(+ 1 2)"))
; 3
使用read
代替read-string
来读取文件。但要小心!这将执行文件中的任何代码。
请注意
read
和read-string
评估他们找到的第一个表单。 load-file
(如在@KobbyPemson's answer中)评估该批次,返回最后一个的结果,就像它们被一个不可见的do
包围一样。
鉴于
(defn read-file [filename]
(with-open [r (java.io.PushbackReader. (clojure.java.io/reader filename))]
(eval (read r))))
(spit "testfile.txt" "(+ 1 2) 3 4")
然后
(eval (read-string "(+ 1 2) 3 4"))
; 3
(read-file "testfile.txt")
; 3
(load-file "testfile.txt")
; 4
(改编自ClojureDocs on read
)
答案 1 :(得分:2)
等效的clojure
a.clj:
(+ 1 2)
b.clj:
(load-file "a.clj")
但请注意,clojure命名空间是正确的方法。 在b.clj中,您可以:使用或:require /:从任何命名空间中引用select函数。
关于第二个问题,您可能需要查找linkers。