使用列表中的名称调用计划函数
是否可以仅使用可用的函数名称(例如列表中的字符串)来调用计划函数?
示例
(define (somefunc x y)
(+ (* 2 (expt x 2)) (* 3 y) 1))
(define func-names (list "somefunc"))
然后使用 (car func-names)
调用 somefunc。
Is it possible to call a Scheme function using only the function name that is available say as a string in a list?
Example
(define (somefunc x y)
(+ (* 2 (expt x 2)) (* 3 y) 1))
(define func-names (list "somefunc"))
And then call the somefunc with (car func-names)
.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
在许多Scheme 实现中,您可以使用
eval
函数:但是,您通常并不真正想这样做。如果可能,将函数本身放入列表中并调用它们:
附录
正如评论者所指出的,如果您确实想要将字符串映射到函数,则需要手动执行此操作。由于函数与其他对象一样都是对象,因此您可以简单地为此目的构建一个字典,例如关联列表或哈希表。例如:
In many Scheme implementations, you can use the
eval
function:You generally don't really want to do that, however. If possible, put the functions themselves into the list and call them:
Addendum
As the commenters have pointed out, if you actually want to map strings to functions, you need to do that manually. Since a function is an object like any other, you can simply build a dictionary for this purpose, such as an association list or a hash table. For example: