小编Ant*_*kou的帖子

Racket 中的动态函数调用;或从字符串中获取过程

对于这个可能很愚蠢的问题,我提前道歉:)

假设,我有一个字符串列表,如

(define func-names '("add" "sub" "mul"))
Run Code Online (Sandbox Code Playgroud)

还有像这样定义的函数

(define (add x y)
  (+ x y))

(define (sub x y)
  (- x y))

(define (mul x y)
  (* x y))
Run Code Online (Sandbox Code Playgroud)

如您所见,列表中字符串的值对应于函数的名称。我需要一种方法来遍历列表并调用与字符串值对应的函数。就像是

(define (all-ops x y)                                        
  (map (lambda (name) (string->proc name x y)) func-names))
Run Code Online (Sandbox Code Playgroud)

string->proc我要找的东西在哪里。send/public_send如果您熟悉 Ruby,则类似于 Ruby 的方法。

我最感兴趣的是适用于 Racket 的答案。

谢谢你。

编辑; 而我忘了提,有可能是函数名的一百万,所以condmatch将繁琐的用在这里。

lisp scheme dynamic racket

2
推荐指数
1
解决办法
2014
查看次数

标签 统计

dynamic ×1

lisp ×1

racket ×1

scheme ×1