使用脚本文件就像使用一个函数一样。

在Lua中,我可以做如下操作:

a.lua:
return 1+2

b.lua:
print(dofile('a.lua'))

我的问题是:这种类似于使用文件作为函数的方法在计算机科学中是否有标准化的名称?除了Lua之外,还有哪些语言支持它?特别是,您是否可以在Clojure(或Lisp)中执行此类操作?

点赞
用户1562315
用户1562315

使用 read 代替 read-string 来从文件中读取。但要注意!这将执行文件中的任何代码。


提示

readread-string 只评估它们找到的第一个形式。load-file(如 @ KobbyPemson 的答案中)评估这些形式并返回最后一个结果,就像它们被包裹在一个隐形的 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关于“读取”的内容

2014-05-21 10:55:34
用户1552130
用户1552130

以下是中文翻译,保留原有的 markdown 格式:

Clojure 的等效代码如下:

a.clj:
(+ 1 2)

b.clj:
(load-file "a.clj")

但请注意,Clojure 命名空间是正确的做法。在 b.clj 中,您可以使用 :use:require/:refer 来选择来自任何命名空间的函数。

至于您的第二个问题,您可能想查找 链接器

2014-05-21 11:48:07