如何在 parenscript 表达式中插入数组下标?
How to insert array subscript in a parenscript expression?
我在 javascript:
中使用此代码
(document.querySelectorAll('[rel="next"]'))[0].click()
我正在尝试在 parenscript (a library from the Common Lisp ecossystem). The expressions in my current sketches are being evalued by the REPL under a package called Nyxt availabe here 中写同样的东西。
CL-USER> (in-package :nyxt)
Nyxt 被设计成一个可无限扩展的浏览器。因此,用户可以在程序 运行 时更改代码 and/or 创建扩展。这是设计的实时黑客能力。
代码如下:
(ps:chain document (query-selector-all "[rel=next]")) (click))
使用 ps:ps
我可以“看到”parenscript 正在构建什么:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]") (click)))
"document.querySelectorAll('[rel=next]').click();"
以上结果接近我的需要。不过还少了一点:parenscript数组的订阅(id.est., Javascript中的“[0]”),在.click()
.
之前
我有一些失败尝试。
- 如果我尝试:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]") [0] (click)))
我多了一个“.”:
"document.querySelectorAll('[rel=next]').[0].click();"
- 如果我尝试:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]") ([0]) (click)))
我多了一个“.”和不必要的 "()":
"document.querySelectorAll('[rel=next]').[0]().click();"
- 如果我尝试:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]")[0] (click)))
我多了一个“.”:
"document.querySelectorAll('[rel=next]').[0].click();"
- 如果我尝试:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]" [0]) (click)))
我得到一个额外的 [0]
作为另一个参数:
"document.querySelectorAll('[rel=next]', [0]).click();"
如何插入?
无意间,我发现了答案,诀窍就是只通过 0
而没有 []
:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]") 0 (click)))
"document.querySelectorAll('[rel=next]')[0].click();"
我认为 parenscript 可以有更多的教程和文档。我一直在努力。因此,我把它留在这里是为了帮助像我这样的其他 Common Lisp 新手 :)
我在 javascript:
中使用此代码(document.querySelectorAll('[rel="next"]'))[0].click()
我正在尝试在 parenscript (a library from the Common Lisp ecossystem). The expressions in my current sketches are being evalued by the REPL under a package called Nyxt availabe here 中写同样的东西。
CL-USER> (in-package :nyxt)
Nyxt 被设计成一个可无限扩展的浏览器。因此,用户可以在程序 运行 时更改代码 and/or 创建扩展。这是设计的实时黑客能力。
代码如下:
(ps:chain document (query-selector-all "[rel=next]")) (click))
使用 ps:ps
我可以“看到”parenscript 正在构建什么:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]") (click)))
"document.querySelectorAll('[rel=next]').click();"
以上结果接近我的需要。不过还少了一点:parenscript数组的订阅(id.est., Javascript中的“[0]”),在.click()
.
我有一些失败尝试。
- 如果我尝试:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]") [0] (click)))
我多了一个“.”:
"document.querySelectorAll('[rel=next]').[0].click();"
- 如果我尝试:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]") ([0]) (click)))
我多了一个“.”和不必要的 "()":
"document.querySelectorAll('[rel=next]').[0]().click();"
- 如果我尝试:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]")[0] (click)))
我多了一个“.”:
"document.querySelectorAll('[rel=next]').[0].click();"
- 如果我尝试:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]" [0]) (click)))
我得到一个额外的 [0]
作为另一个参数:
"document.querySelectorAll('[rel=next]', [0]).click();"
如何插入?
无意间,我发现了答案,诀窍就是只通过 0
而没有 []
:
NYXT> (ps:ps (ps:chain document (query-selector-all "[rel=next]") 0 (click)))
"document.querySelectorAll('[rel=next]')[0].click();"
我认为 parenscript 可以有更多的教程和文档。我一直在努力。因此,我把它留在这里是为了帮助像我这样的其他 Common Lisp 新手 :)