我正在尝试在 Racket 中制作一个简单的书签网络应用程序。
它的目的是接收一个 url 作为 CGI 参数,现在,我只是试图通过反射它来确认我收到了它。
(define (start request)
(response/xexpr
(let* ([bindings (request-bindings request)]
[url (if (exists-binding? 'url bindings)
(extract-binding/single 'url bindings)
"NO URL")])
`(html
(head (title "TITLE"))
(body (h2 "TITLE")
(p "URL = " url))
))))
然而,不是看到我期望看到的..这是一个包含
URL = http://google.com
我正在看
URL = &url;
这表明 url 在 xexpr 中被逐字引用(被视为实体),而不是被视为变量。
那么我做错了什么?如何评估 url?
你需要使用quasiquote
and unquote
将值注入引用的表达式中,通常被视为其读者缩写等效项,`
and ,
, 分别。当你使用unquote
/,
代替quasiquote
/`
,它将计算表达式并将其插入到周围的引用中:
> (define url "http://google.com")
> `(p "URL = " ,url)
(p "URL = " "http://google.com")
你应该把,
在...前面url
在您的模板中取消引用它。
有关报价和准报价的更详细说明,请参阅本答案的附录A https://stackoverflow.com/a/34984553/465378.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)