Racket 球拍响应/xexpr中的评估变量
我正在尝试在Racket中制作一个简单的书签web应用程序 它的目的是接收一个url作为CGI参数,现在,我只是想通过反射来确认我收到了它Racket 球拍响应/xexpr中的评估变量,racket,Racket,我正在尝试在Racket中制作一个简单的书签web应用程序 它的目的是接收一个url作为CGI参数,现在,我只是想通过反射来确认我收到了它 (define (start request) (response/xexpr (let* ([bindings (request-bindings request)] [url (if (exists-binding? 'url bindings) (extract-binding/sing
(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?使用
,url
:
`(html
(head (title "TITLE"))
(body (h2 "TITLE")
(p "URL = " ,url))
))))
在文档中查找
unquote
:您需要分别使用quasikote
和unquote
将值注入到带引号的表达式中,通常被视为它们的读取器缩写等价物,`
和,
。使用unquote
/,
在quasikote
/`
内部时,它将计算表达式并将其插入周围的引号中:
> (define url "http://google.com")
> `(p "URL = " ,url)
(p "URL = " "http://google.com")
您应该将,
放在模板中url
的前面,以将其解压缩
有关引号和准旋转的更详细解释,请参见。好的,我没有看到,我认为表达式开头的反勾号足以让变量进行这样的计算。谢谢