如何将字符串映射为对应函数?例:"+"转#'+、"myfunname"转#'myfunname
字符串转函数引用的实现方案
核心思路
要将字符串转换为#'符号形式的函数引用,本质是先把字符串转为对应语言的符号,再获取其关联的函数对象引用。
具体实现(以Common Lisp为例)
- 对于普通函数名字符串(比如
"myfunname"或"+"),可通过以下代码实现转换:
调用示例:(defun string-to-function-ref (str) (#'(intern str)))(string-to-function-ref "myfunname") ; 返回 #'MYFUNNAME (string-to-function-ref "+") ; 返回 #'+ - 关键注意点:
intern函数默认将字符串转为当前包内的符号,若目标函数在其他包,需指定包名,比如(intern str "CL")可引用Common Lisp标准包的内置函数。- 需确保字符串对应的函数已提前定义,否则
#'引用会触发未定义符号的错误。
跨语言扩展说明
如果是其他Lisp系语言(比如Scheme),逻辑一致:先将字符串转为符号,再获取函数引用。例如Scheme中可通过(eval (string->symbol "+"))直接获取+函数对象。
内容的提问来源于stack exchange,提问作者SourBitter
相关产品推荐
相关产品推荐

