又是一年'六一',同时也是青语言发布第一个开源版本一周年,在这个具有纪念意义的日子里,我们带来了青语言的新版本v1_20240601。
新版本下载:https://qingyuyan.cn/download.html
主要更新如下:
1、平台更新至.Net8
2、编辑器增加Windows程序打包功能。由于很多用户反馈希望能够将青语言程序打包成可执行文件,因此我们在新版本中加入了这个功能。
该功能本质上是将青语言的解释器或青编程程序和脚本代码打包到单个exe文件中,运行时会自动释放程序资源,目前只支持Windows下使用。
3、增加了BindAnno注解,用于将C#原生对象及属性绑定到青语言对象中,便于青语言扩展库的开发,例如:
// 在扩展库中有如下对象
public class DateObj : Obj {
// 这是之前的写法,需要定义Prop类,并分别实现Qget和Qset方法
class BindYear : Prop {
public BindYear(Obj obj) : base(obj) {}
public override Expr Qget(Ctx? ctx=null) {
……
}
public override Expr Qset(Expr val, Ctx? ctx=null) {
……
}
}
// 通过注解可以直接绑定基本类型的成员
[BindAnno("#备注")]
private string remark;*/
……
}
支持注解方式绑定的类型有 bool、int、long、float、double、decimal、string。
对于复杂对象也支持通过路径绑定,如下:
[BindAnno("#其他", "a.b.c", typeof(DateTime))]
public new object Raw { get; set; }
这种方式需要指明绑定对象的实际类型。
4、封装了码数吐司库,提供工具支持。青语言1.0之后的主要工作方向是通过动态扩展库来丰富青语言的功能,此次我们封装了.Net中一个非常优秀的工具库(码数吐司)的部分功能,为大家带来一些便捷的工具。之后我们还会继续扩充青语言的扩展库。
青语言-码数吐司库 使用说明
以下是一些简单示例:
#库 = @加载动态库、“./数据库连接库.dll”
;数字转换
#库@转中文数字【“123.45”】 ;一百二十三点四五
#库@转中文金额【“123.45”】 ;壹佰贰拾叁元肆角伍分
#库@十进制转任意进制【123,8】 ;十进制转八进制,返回字符串 “173”
#库@任意进制转十进制【“173”,8】 ;八进制转十进制,第一个参数是字符串类型
;农历工具
#库@转农历【“2018-12-31”】 ;支持传入字符串或时间对象,下同
#库@转农历【@系统时间【】】
#库@转生肖【“2018-12-31”】
#库@转干支【“2018-12-31”】
#库@转农历节日【“2018-12-31”】
;多线程下载器
;指定下载路径和保存路径,最后设置线程数,如果不设置则默认为2线程
#下载器 = #库@创建多线程下载器【“https://qing.if4.ttyt.cc/qing/Qing.dll”, “H:\\Qing.dll”, 3】
#下载器#缓存文件夹 = “H:\\”
#下载器@下载进度变更命令 = @【#某】{@显示、#某#总进度}
#下载器@合并完成命令 = @【#某】{@显示、“下载完成了”}
#下载任务 = #下载器@开始下载【】 ;开始下载返回的是异步任务
@等待任务、#下载任务