提问人:Alex Correia 提问时间:8/17/2016 最后编辑:CommunityAlex Correia 更新时间:8/17/2016 访问量:2071
球拍语言:如何将字符串转换为变量名
Racket language: How to convert string to variable-name
问:
我是 Racket 的新手,我尝试运行 Chris Jester-Young 的解决方案(如何在方案中将字符串转换为变量名)将字符串转换为变量名(反过来,换句话说,将变量名转换为字符串):
#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 64 位。
我的主要目标是如何将字符串转换为变量名称(标识符)。
我想知道:
- 读取文本文件;
- 从该文本文件中获取变量(字符串)的名称;和
- 用于设置具有随机整数的变量名称。
define
任何帮助,我将不胜感激。
答:
0赞
Bohdan Ivanov
8/17/2016
#1
您可以从这里查看答案。
有人建议我不要使用字符串,而是使用标识符。因此,您可以使用另一个带有您想要使用的标识符的 Racket 源,而不是使用纯文本文件,然后导入这个源。
评论
0赞
Alex Correia
8/18/2016
阅读纯文本文件是学术工作的要求。此外,我必须构建一个能够:1-读取纯文本文件的程序;2-从该纯文本文件中提取一些字符串;3- 动态地将该字符串分配给变量名称;4-对该变量进行一些计算;5-最后,将结果写到纯文本文件中。我在所有这些步骤中都取得了成功,但第 3 步除外。
0赞
Alex Correia
8/18/2016
试图提供有关我试图做的事情的更多细节:;字符串“习”是从文本文件中提取的。 ;是不是也一样? ;错误 未定义 习。 ;结果等于 5 吗?(define temp_var "Xi")
(define (display temp_var) 2 )
(define Xi 2)
(display Xi)
(+ Xi 3)
评论
(variable-name->string foo)
variable-name->string
(define (variable-name->string ...
variable-name->string
(define myvar2 1)