You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rascal MPL中动态获取变量的属性或字段?

在Rascal中获取变量属性/字段的方法

你要找的类似JavaScript Object.keys 或 Python vars 的功能,在Rascal里可以通过以下几个内置函数实现:

  • fields 函数:返回一个值的所有字段名称(字符串列表),适用于记录(record)、代数数据类型的构造子实例等。
    示例:

    data Person = person(str name, int age);
    Person p = person("Alice", 30);
    println(fields(p)); // 输出: ["name", "age"]
    
  • values 函数:和fields搭配使用,返回对应字段的值列表,要同时拿到字段名和值可以用zip(fields(val), values(val))。
    示例:

    println(zip(fields(p), values(p))); // 输出: [("name", "Alice"), ("age", 30)]
    
  • typeOf 结合字段遍历:如果需要从类型层面查看字段(而非实例),可以对typeOf返回的类型值使用fields:

    println(fields(typeOf(p))); // 同样输出: ["name", "age"]
    

另外,对于映射(map)类型,直接用keys函数就能获取所有键,效果类似Object.keys处理对象:

map[str, int] scores = {"math": 90, "english": 85};
println(keys(scores)); // 输出: ["math", "english"]

需要注意的是,这些函数主要针对Rascal的记录、代数数据类型实例、映射等结构化数据,对int、str这类基本类型调用fields会返回空列表,因为它们没有字段属性。

内容的提问来源于stack exchange,提问作者Teun M.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 04:35:28