Skip to content

0.4.2 Release

Latest
Compare
Choose a tag to compare
@HelloAIXIAOJI HelloAIXIAOJI released this 18 May 17:48
· 7 commits to master since this release

Full Changelog: 0.4.1...0.4.2
本文档介绍JiLang 0.4.2版本的更新内容,包括新增功能和修复的问题。

主要更新

1. 加入get_property语句

新增了强大的动态属性访问功能,通过get_property语句可以更灵活地访问对象和数组的属性与元素。此功能特别适合需要在运行时动态决定访问路径的场景。

基本语法:

{
  "get_property": {
    "object": "要访问的对象或数组",
    "path": "属性路径或属性路径数组",
    "output": "存储结果的变量名(可选)"
  }
}

主要特性:

  • 支持使用字符串路径(使用点号分隔)或数组路径访问嵌套属性
  • 支持变量作为路径元素,实现真正的动态属性访问
  • 支持数组索引和length属性访问
  • 详细错误提示,帮助定位访问问题

完整文档请参阅动态属性访问文档

2. 修复VariableReference自0.4.0后的问题

在0.4.0版本的重构中,变量引用系统遇到了一些问题,特别是在处理嵌套属性和数组索引时。0.4.2版本修复了这些问题:

  • 修复了嵌套属性访问中的解析错误,如@var.object.property格式
  • 修复了数组元素访问时的索引解析问题,如@var.array[0]
  • 修复了嵌套数组访问的处理,如@var.array[0][1]
  • 修复了数组length属性无法正确访问的问题

这些修复确保了变量引用在各种复杂场景下的稳定工作。

3. 加强VariableReference功能

除了修复问题外,我们还对变量引用系统进行了多项增强:

  • 新增对动态索引引用的支持,如@var.array[@var.index]
  • 改进了错误处理,提供更清晰的错误消息
  • 增强了变量解析的类型安全性,减少运行时错误
  • 优化了嵌套变量引用的性能
  • 添加了对中文和非ASCII变量名的更好支持

4. 支持.jil文件后缀

从0.4.2版本开始,JiLang正式支持.jil文件扩展名,以避免与其他编程语言(如Julia语言的.jl)发生混淆:

  • 解释器现在能自动识别并处理.jil.jl文件
  • 推荐所有新建项目使用.jil作为标准文件扩展名
  • 现有的.jl文件可以继续使用,但建议逐步迁移到.jil

这一变更有助于明确区分JiLang程序,提高项目的可识别性,并避免与其他工具的潜在冲突。

使用示例

动态属性访问示例

{
  "program": {
    "main": {
      "body": [
        {"var": {
          "user": {
            "name": "张三",
            "details": {
              "age": 30,
              "skills": ["编程", "设计", "写作"]
            }
          }
        }},
        {"var": {"property": "age"}},
        {"var": {"skill_index": 1}},
        
        // 使用变量决定访问的属性
        {"get_property": {
          "object": "@var.user",
          "path": ["details", "@var.property"],
          "output": "user_age"
        }},
        {"echo": ["用户年龄: ", "@var.user_age", "\n"]},
        
        // 使用变量作为数组索引
        {"get_property": {
          "object": "@var.user",
          "path": ["details", "skills", "@var.skill_index"],
          "output": "user_skill"
        }},
        {"echo": ["用户技能: ", "@var.user_skill", "\n"]}
      ]
    }
  }
}

增强的变量引用示例

{
  "program": {
    "main": {
      "body": [
        {"var": {"items": [10, 20, 30, 40, 50]}},
        {"var": {"index": 2}},
        
        // 使用动态索引访问数组
        {"echo": ["动态索引访问: ", "@var.items[@var.index]", "\n"]},
        
        // 访问数组长度
        {"echo": ["数组长度: ", "@var.items.length", "\n"]}
      ]
    }
  }
}

向下兼容性

0.4.2版本完全向下兼容0.4.0和0.4.1版本的功能,所有现有程序应当可以正常运行。同时,建议开发者利用新的get_property功能来实现更灵活的数据访问模式。