Common Lisp 中函数的作用域
Scope of a function in Common Lisp
假设我必须定义一个名为 foo
的函数。假设为了定义它,我使用了一些辅助函数foo1
、foo2
、foo3
、...
当我加载包含这些功能的文件时,我可以从顶层使用所有这些功能。相反,我只想从顶层 "see" 函数 foo
和 "hide" 其他函数。我怎样才能达到这个结果?
您可以使用 flet
.
例如,
(flet ((foo1 (...) ...)
(foo2 (...) ...)
(foo3 (...) ...))
(defun foo (...)
(foo1 (foo2 (foo3 ...))))
(defun goo (...)
(foo2 (foo1 (foo3 ...)))))
假设我必须定义一个名为 foo
的函数。假设为了定义它,我使用了一些辅助函数foo1
、foo2
、foo3
、...
当我加载包含这些功能的文件时,我可以从顶层使用所有这些功能。相反,我只想从顶层 "see" 函数 foo
和 "hide" 其他函数。我怎样才能达到这个结果?
您可以使用 flet
.
例如,
(flet ((foo1 (...) ...)
(foo2 (...) ...)
(foo3 (...) ...))
(defun foo (...)
(foo1 (foo2 (foo3 ...))))
(defun goo (...)
(foo2 (foo1 (foo3 ...)))))