list - 将变量视为 Scheme 中的符号
问题描述
我有以下列表
'(hash a (num 1 2) b (num 3 2) c (num 3 2) d (num 7 2))
在方案中。我想把它当作一种表达,放在eval
它前面。但是当我这样做时,它会给我一个错误:“无法在定义之前引用标识符”。我的猜测是它将a
, b
, 和c
视为变量。但我想把它们当作符号。这可能吗?
解决方案
好吧,你当然引用他们:
'(hash 'a (num 1 2) 'b (num 3 2) 'c (num 3 2) 'd (num 7 2))
eval
应该避免,特别是对于用户输入,我猜如果你知道数据,有很多方法可以在不使用 eval 的情况下进行哈希:
; makes an alist
(define content `(a ,(num 1 2)
b ,(num 3 2)
c ,(num 3 2)
d ,(num 7 2)))
;; makes a hash
(define my-hash (apply hash content))
如果这真的是用户输入,我会配对它:
(define user-input '((a 1 2) (b 3 2) (d 7 2)))
(define content
;; or use flatmap
(apply append
(map (lambda (v) (list (car v) (num (cadr v) (caddr v))))
user-input)))
;; makes a hash
(define my-hash (apply hash content))
推荐阅读
- .net - EF Core 事务行为
- vue.js - CKEditor5-vue - 自定义插件如何访问包含的组件?
- python - 无法在 jupyter notebook 上导入 statsmodels
- javascript - REACTJS 如何通过数组更新文本渲染
- python-3.x - Seaborn Catplot 需要 10 分钟才能完成
- php - PHP中引号内的If...Else语句
- excel - talend 中的 tREST 组件异常处理
- devops - 我想将挂载 tomcat 服务器绑定到我的本地机器
- python - 如何使用 python 将 netcdf 文件转换为 .csv 工作表
- swift - 如何在 swift Xcode 中将 TextView 添加到 VStack 的顶部?