鸿蒙仓颉语言【基础-数据类型dataType】

news2024/9/23 3:33:21

数据类型

仓颉编程(CangjieLang)是强类型语言,变量和函数参数都需要显式声明类型,例如:

public let growable: Bool = false
public func get(value: Array<Byte>): Int64。

基础数据类型

仓颉(CangjieLang)的基础数据类型有已以下几种:

  • Bool:布尔型
  • Int8:8位有符号整数
  • Int16:16位有符号整数
  • UInt16:16位无符号整数
  • Int32:32位有符号整数
  • UInt32:32位无符号整数
  • Int64:64位有符号整数
  • UInt64:64位无符号整数
  • Float16:16位浮点数
  • Float32:32位浮点数
  • Float64:64位浮点数
  • Rune:Unicode字符
  • Enum:[枚举类型]

需要注意语言规约是所有的数据类型名都是大写。

常见的泛型类型:

泛型,类似于其他编程语言,形式为:Type<T>,其中T可以是Unit或其他类型,Type可以是任意自定义类型,如Collection<T>ArrayList<T>。 仓颉中常见的高级泛型有: Collection: 泛型集合类型 ArrayList:泛型数组链表类型 Array: 泛型数组类型 Result: 泛型结果类型,表示可能包含错误的结果

其他常见的高级类型

高级类型,非常多,多以标准库或者可扩展库提供,你也可以编写自己的类库,这里列举一些常见的高级类型。

  • Duration:时间间隔的类型
  • DateTime:日期和时间的类型
  • BlockingQueue: 阻塞队列,用于线程间的数据传输
  • ConcurrentHashMap: 线程安全的哈希表
  • AtomicBool: 原子布尔类型,用于实现线程安全的布尔操作
  • ArrayList: 动态数组类型
  • TypeInfo: 反射类型信息
  • Endian: 字节序
  • BigInt: 大整数
  • Decimal: 十进制数

与Rust的类型比较:

与Rust语言的对比如下:(为什么是rust?没有为什么,纯感觉,理论上可以自行比较其他任意编程语言)

  • 布尔类型:Rust中的布尔类型是bool
  • 整数类型:Rust中的整数类型可以根据需要选择,例如u8i32
  • 字节类型:Rust中的字节类型是u8
  • 数组类型:Rust中的数组类型是[u8]
  • 泛型类型:Rust中的泛型类型如Vec<u8>HashSet<u8>Result<T, E>,其中T可以是()或其他类型,E是错误类型等
  • 哈希类型:Rust中的哈希类型是Hash
  • 可比较类型:Rust中的可比较类型是PartialEqEq
  • 迭代器类型:Rust中的迭代器类型是Iterator<Item = T>,其中T可以是u8或其他类型
  • 异常类型:Rust中的异常处理是基于ResultOption类型,可以使用panic!宏抛出异常

以下是一些示例:

  • 布尔类型示例:
let growable: bool = false;
let moveOnWriteOverflow: bool = growable;
  • 整数类型示例:
let DEFAULT_BUFFER_SIZE: i64 = 8192;
let currentReadOffset_: i64 = 0;
let currentWriteOffset_: i64 = 0;
  • 字节类型示例:
let value: u8 = 42;
  • 数组类型示例:
let value: Vec<u8> = vec![1, 2, 3];
  • 结果类型示例:
fn append(value: u8) -> Result<(), IndexOutOfBoundsException> {
    // ...
}
  • 集合类型示例:
let buffers: Vec<OffHeapCellByteBuffer> = Vec::new();
  • 哈希类型示例:
trait Hashable {
    // ...
}
  • 可比较类型示例:
trait Equatable<T> {
    // ...
}
  • 迭代器类型示例:
struct ByteBufferIterator<'a> {
    buffer: &'a ByteBuffer,
}

impl<'a> Iterator for ByteBufferIterator<'a> {
    type Item = u8;
    
    fn next(&mut self) -> Option<Self::Item> {
        // ...
    }
}
  • 异常类型示例:
    在这里插入图片描述
struct ByteBufferException {
    // ...
}

struct IndexOutOfBoundsException {
    // ...
}

struct Exception {
    // ...
}

这些是一些可能的数据类型和示例,具体的Rust代码实现可能有所不同,这里只是提供了一个对比参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1934187.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

生命周期的妙用——Vue3

Vue3的生命周期 从Vue2到Vue3&#x1f47e;不只onMounted又见keep-alive主要属性被你包裹应用场景 ) 从Vue2到Vue3&#x1f47e; Vue 3 保留了大多数 Vue 2 的生命周期钩子&#xff0c;同时引入了组合 API 中的生命周期钩子。以下是 Vue 3 中的生命周期钩子&#xff1a; 不…

R语言进行集成学习算法:随机森林

# 10.4 集成学习及随机森林 # 导入car数据集 car <- read.table("data/car.data",sep ",") # 对变量重命名 colnames(car) <- c("buy","main","doors","capacity","lug_boot","safety"…

linux下JDK的安装

前言&#xff1a; 安装部署java开发的代码都需要java环境&#xff0c;这里记录下linux下JDK的安装过程&#xff0c;仅供学习参考。 JDK的下载 下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads 选择和操作系统匹配的版本进行下载 查看操作系统&…

记录些MySQL题集(11)

MySQL 组提交原理 MySQL 中事务的两阶段提交保证了 redo log 与 binlog 两种日志文件的数据一致性&#xff0c;但是并发事务场景下还需要保证事务顺序的一致性&#xff0c;因此通过组提交机制在保证顺序一致性的前提下提高写入效率。因此组提交是两阶段提交的一部分。 两阶段…

JavaScript基础(十五)

变量&返回值 js中的变量有两种: 局部变量和全局变量 全局变量: 在函数外声明的变量&#xff0c;网页上的所有函数和脚本都能访问它。 局部变量&#xff1a; 在函数内部声明的变量&#xff08;必须使用var&#xff09;&#xff0c;只能在函数内部访问它&#xff0c;我们…

区分C语言中的全局变量和java中的类的变量

该程序运行结果&#xff1a; 原因&#xff1a; new Homework08().count1();中改变的count的值是该对象的count变量&#xff0c; 但是Homework08 t1 new Homework08(); t1.count2(); t1.count2();改变的都是t1变量的count的值 //20224.07.16public class Homework08 {public …

在组件中显示tuku的照片

一、问题 &#xff08;1&#xff09;错误&#xff1a;域名前面一定要加http://要不然会报错 &#xff08;2&#xff09;在使用 defineModel传值时一定要动态绑定&#xff0c;要不然图片不显示 &#xff08;3&#xff09;改完后在商品列表中显示图片信息必须 在显示的图片中取…

ARM体系结构和接口技术(六)KEY按键实验① 按键轮询检测

文章目录 一、按键轮询&#xff08;一&#xff09;分析按键的电路连接1. 按键原理图2. 按键消抖 二、分析芯片手册&#xff08;一&#xff09; GPIO章节&#xff08;二&#xff09;RCC章节 三、代码&#xff08;一&#xff09;key.c&#xff08;二&#xff09;key.h 一、按键轮…

基于python的笔记本电脑购买意愿影响因素分析,包括情感分析和聚类分析

摘要&#xff1a;本论文基于Python大数据视角&#xff0c;旨在分析笔记本电脑购买意愿的影响因素。通过爬取京东网站上的评论数据&#xff0c;使用多种技术和工具进行数据分析和处理。使用requests库爬取了大量的在线评论数据。利用pandas对数据进行清洗、处理和统计&#xff0…

实况:老菜鸟自力更生从零开始重学spring目标是画出一张唬人大图(三、spring启动的入口搭建源码阅读环境)

前情提要&#xff1a;源码下载&编译 速览 设计一个最简单的spring项目spring的入口在哪&#xff1f;怎么启动的&#xff1f;搭建源码阅读环境新建module并添加依赖编写一个微型spring项目&#xff08;配置bean->获取bean->使用bean&#xff09; 不打无准备之仗&…

windows下使用make编译C/C++程序 gcc编译 MinGW编译器

文章目录 1、概要2、编译环境搭建3、创建工程目录结构4、 编写程序4.1 编写头文件4.2 编写源文件 5、编写makefile及相关文件5.1 编写清理编译生成文件的批处理文件&#xff0c;供makefile调用5.2 编写makefile文件 6、编译工程6.1 打开命令行6.2 使用make命令编译程序6.3 编译…

【数据结构】二叉树———Lesson2

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

QT CNA上位机报错 解决方案

QT编译报错: -lControlCAN 解决方案 更换三个文件&#xff0c;即可解决(QT 自带的是32位库&#xff0c;应使用64位库文件)

Linux系统编程---Make/MakeFile

认识make/makefile make是一个命令 makefile是一个当前目录下的文件。 make会自动推导makefile中的依赖关系&#xff0c;栈式结构。形成可执行文件 如何清理 在makefile文件里加上clean&#xff0c;运行时直接make clean&#xff0c;建议clean放在后面。 在没有改变源文件的…

深入学习STL标准模板库

C STL standard template libaray 标准模板库 目录 C STL standard template libaray 标准模板库 一、标准容器顺序容器vectordequelistvector deque list对比 容器适配器stackqueuepriority_queue 关联容器unordered_setunordered_multisetunordered_mapunordered_multimapset…

【C++基础】类和对象(4)

目录 一、再探构造函数 1.1 构造函数体赋值 1.2 初始化列表 二、类型转换 三、static成员 概念&#xff1a; 特性&#xff1a; 四、友元 4.1 友元函数 4.2 友元类 五、内部类 六、匿名对象 七、对象拷贝时的编译器优化 一、再探构造函数 1.1 构造函数体赋值 …

Admin.NET源码学习(2:安装并运行前端)

根据Admin.NET的GitHub主页介绍&#xff0c;前端运行步骤需要运行pnpm命令。百度pnpm的话&#xff0c;需要支持npm相关的命令支持。   根据参考文献4&#xff0c;安装Node.js后会提供npm命令支持&#xff08;npm是Node.js的软件包管理器&#xff0c;用于安装、发布和共享Jav…

在Linux系统安装MySQL有多简单

MySQL 是一种流行的开源关系数据库管理系统&#xff0c;广泛应用于各种类型的应用程序和服务。在安装TitanIDE​​​​​​​以后是没有MySQL服务的&#xff0c;我们需要单独安装安装MySQL。本文将介绍在 Linux 上安装 MySQL 的多种方式&#xff0c;包括离线安装、使用 Docker …

纤丝龙:强根固发,滋养头皮的天然秘诀

在我国传统中医学中&#xff0c;头发被视为“血之余&#xff0c;肾之华”&#xff0c;其生长与健康状况直接反映了人体的精神面貌和生命力。然而&#xff0c;现代生活节奏加快&#xff0c;压力不断增大&#xff0c;导致许多人出现头发干枯、分叉、脱落等问题。纤丝龙&#xff0…

“轻、灵、画、韵”,TCL第三代艺术电视引领艺术生活

7月17日&#xff0c;TCL第三代艺术电视A300系列正式上市&#xff0c;其中&#xff0c;A300 Pro配备B&O音响&#xff0c;共有65/75/85三个尺寸&#xff0c;首发到手价分别为8999元、11999元和15999元。不带Soundbar的A300W&#xff0c;它有55/65/75/85四个尺寸&#xff0c;首…