string - Racket 语言:如何将字符串转换为变量名

标签 string variables dynamic racket definition

我在Racket中是一个新手,我尝试运行Chris Jester-Young的解决方案(How to convert string to variable-name in scheme)将字符串转换为变量名(及其相反,也就是将变量名转换为字符串):

#lang racket
(define-syntax string->variable-name
   (lambda (stx)
   (syntax-case stx ()
     ((_ str)
       (string? (syntax->datum #'str))
         (datum->syntax #'str (string->symbol (syntax->datum #'str)))))))

(define-syntax variable-name->string
  (lambda (stx)
    (syntax-case stx ()
    ((_ id)
       (identifier? #'id)
         (datum->syntax #'id (symbol->string (syntax->datum #'id)))))))
variable-name->string很好,下面是一个示例:
>(define myvar 10)
>(variable-name->string myvar)
  "myvar"

但是,我对string->variable-name没有成功:
>(define (string->variable-name "myvar2") 4)
    error define: not an identifier, identifier with default, or keyword
    for procedure argument in: "myvar2"

我正在使用Racket 6.6,Linux mint 17.3 64bits。

我的主要目标是如何将字符串转换为变量名(标识符)。

我在想:
  • 读取文本文件;
  • 从该文本文件中获取变量的名称(字符串);和
  • 使用define设置具有随机整数的变量名称。

  • 任何帮助,我将不胜感激。

    最佳答案

    您可以从here检查答案。

    建议我不要使用字符串,而要使用标识符。因此,除了使用纯文本文件之外,您还可以使用其他带有您要使用的标识符的Racket源,然后导入该源。

    关于string - Racket 语言:如何将字符串转换为变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38994906/

    相关文章:

    c# - 解析动态JSON数据时最好使用什么:动态类型内置的JToken或C#

    c - 函数生成空字符串而不是输出 (C)

    java - 使用 Rabin-Karp 算法查找最长回文子串

    bash - shell 脚本 : Using a variable to define a path

    javascript - JQuery/PHP 动态下拉问题

    javascript - 如何按类型和类定位元素

    java - 一起使用 String 和 int 时的 System.out.println 行为

    python - 在 Pandas DataFrame 的字符串中漂亮地打印换行符

    python - python可以生成可执行的shell脚本吗?

    php - 从类中变量的函数中获取值