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
功能来实现更灵活的数据访问模式。