【问题标题】:Call a function from a string name in (Emacs) Lisp从(Emacs)Lisp中的字符串名称调用函数
【发布时间】:2015-03-23 14:40:41
【问题描述】:

给定一个由各种连接构建的字符串“my-func-name”,我想调用关联的函数。

由于funcall 需要一个函数对象作为参数,我想知道是否有办法通过函数名称检索函数引用,以便我可以执行它。

提示:我目前正在使用 Emacs Lisp 方言。

非常感谢

奖励:示例虚拟代码

(defun my-func-name ()
  "My function."
  (message "Hello"))

(setq mfname "my-func-name")

;; Not working, obviously
;; (funcall mfname)

【问题讨论】:

    标签: emacs lisp elisp


    【解决方案1】:

    使用intern 获取该名称的符号,然后使用funcall it:

    (funcall (intern "my-func-name"))
    

    【讨论】:

    • and if (setq fname = "myfunc") 如何调用fname?
    • @RichieHH 那是(funcall (intern fname))
    • 感谢您的回复。傻我。我把Q错了。但是我现在已经排序我实际上需要(funcall(symbol-val(intern-soft myVarHoldingFunctionNameAsString)))。虽然看着那我需要再次去玩scratch。有一天整个字符串/符号的东西都会点击...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多