gpt4 book ai didi

rascal - 写下更短的访问

转载 作者:行者123 更新时间:2023-12-02 09:26:37 24 4
gpt4 key购买 nike

是否可以使用列表理解或类似的东西将这样的访问重写为单行?

list[str] nodeNames = [];

visit (ast) {
case someNode(str name): {
nodeNames += name;
}
};

最佳答案

是的,您可以使用我们所说的后代匹配运算符/:

[name | /someNode(str name) := ast];

你看这里

  • [] 之间的列表理解。
  • 匹配运算符 :=,左侧为模式,右侧为主题。
  • 后代模式 /someNode(str name) 将匹配 someNode(str name) 形式的每个子节点,并绑定(bind)模式变量 name.

总体效果与使用访问的表述相同:收集来自 someNode 的所有 name 字段并将其放置在列表中。这是解决您问题的最短解决方案。

关于rascal - 写下更短的访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37411151/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com