Skip to content

数据类型手册

[🕒 预计 20 分钟] | 难度:入门

本节介绍 LingCpp 中常用数据类型的声明与使用要点。LingCpp 的类型名以"型"结尾,与类易语言的习惯保持一致。

1. 基本类型

类型描述默认值
整数型32 位有符号整数0
长整数型64 位有符号整数0
小数型双精度浮点数0.0
双精度小数型双精度浮点数(显式全称写法)0.0
文本型字符串""
逻辑型布尔值,取值为 /
字节集二进制字节序列
日期时间型日期时间

2. 声明与赋值

lcpp
整数型 数量 = 10
小数型 单价 = 3.5
文本型 名称 = "LingBuilder"
逻辑型 已完成 =

+ 拼接文本与其他类型时,LingCpp 会自动做文本转换:

lcpp
整数型 计数值 = 5
文本型 结果文本 = "计数:" + 计数值    // "计数:5"

3. 类型转换

类型之间的转换通过模块命令完成,例如 JSON 模块提供的取值命令可以把 JSON 数据安全地转换为整数、文本、小数等类型;网络模块的响应内容也通过 HTTP客户端_取响应文本 等命令取得后按文本处理。

编写转换代码时请注意:

  • 从外部数据(JSON、HTTP 响应、文件)读取数值前,先用 JSON_是否数字JSON_取类型 等命令确认实际类型,避免无效转换。
  • 文本比较使用 ==,判断空文本使用 如果 (名称 == "")

4. 集合数据

界面中的集合数据通常由控件承载:

  • 列表框 / 组合框 / 列表视图 通过 项目集合 属性和对应命令维护条目;
  • 数据表格 通过 列配置初始数据 组织行列;
  • 大批量数据处理请把整批数据作为参数交给多线程模块的后台任务(如 线程_提交进度(&工作, &进度, &完成, 记录数组)),界面只在进度与完成处理器里刷新,避免在事件中逐条高频更新。

纯数据数组(文本型[]整数型[]、记录数组等)的增删改查由内置的数组操作模块提供,见下一节。

5. 数组操作模块

内置 数组操作模块lingbuilder.std.array)为各类数组提供成员数、增删改查、排序和重定义能力。命令对元素类型透明,索引统一从 0 开始,越界一律安全返回失败值而不崩溃。

命令说明
数组_取成员数(数组)返回数组当前成员数量
数组_是否为空(数组)判断数组是否没有任何成员
数组_取成员(数组, 索引)按 0 起始索引读取成员,越界返回元素类型默认值
数组_置成员(数组, 索引, 值)覆盖指定索引的成员,越界返回假
数组_加入成员(数组, 值)在末尾追加成员,返回追加后的成员数
数组_插入成员(数组, 索引, 值)在指定索引之前插入成员
数组_删除成员(数组, 索引)删除指定索引成员,后续成员依次前移
数组_清空(数组)删除全部成员
数组_查找(数组, 值)返回首个相等成员的索引,未找到返回 -1
数组_是否包含(数组, 值)判断是否包含相等成员
数组_排序(数组, 升序)按元素自身顺序稳定排序
数组_倒序(数组)把成员按当前顺序整体反转
数组_重定义(数组, 新成员数)调整成员数:变小截断,变大用默认值补齐

数组变量声明时在名称后加 [](参数表也可写成 类型[] 参数名),遍历使用 枚举循环首

lcpp
局部 文本型 名单[]
数组_加入成员(名单, "张三")
数组_加入成员(名单, "李四")
枚举循环首 (名单, 当前项)
    调试输出(当前项)
枚举循环尾 ()
调试输出("成员数", 数组_取成员数(名单))

NOTE

记录类型数组(见下一节)默认不带比较运算,数组_查找 / 数组_是否包含 / 数组_排序 对记录数组会稳定返回失败值,而不是编译失败。

6. 项目自定义数据类型

在项目树的 项目数据类型.lcpp 中定义项目级自定义数据类型,构建时确定性生成真实 C++ struct

lcpp
数据类型 联系人
    文本型 姓名 = ""
    整数型 年龄 = 0
    文本型[] 电话列表
结束数据类型

使用规则:

  • 项目自定义数据类型只能声明在 项目数据类型.lcpp 中;该文件不能声明窗口类、项目常量或项目全局变量。
  • 字段写成 类型 字段名;字段名后追加 [] 表示数组字段,= 默认值 指定字面量默认值。
  • 字段可用类型:文本型整数型长整数型逻辑型小数型双精度小数型字节型字节集,以及其他已定义的项目自定义数据类型(嵌套)。
  • 数组、字节集和嵌套对象字段只能使用默认空初始化;类型之间禁止循环嵌套,诊断会标出循环链。
  • 在窗口代码中声明变量并用 . 访问成员:
lcpp
局部 联系人 临时联系人
临时联系人.姓名 = "小林"
临时联系人.年龄 = 28

7. 常见陷阱

  • 类型名要写全:是 整数型 而不是 整数,是 文本型 而不是 文本
  • 逻辑型 只有 两个取值。
  • 控件引用参数必须传入设计器中的裸控件名(不加引号),详见 窗口设计器
  • 在界面事件中执行耗时操作会阻塞界面,长任务应交给多线程模块。

下一步