当前位置: 首页 > news >正文

仓颉编程语言类型特点

仓颉编程语言类型特点

仓颉编程语言是一种静态类型(statically typed)语言。同时,仓颉编程语言是一种强类型(strongly typed)语言。

仓颉中的类型可分为两类:不可变类型(immutable type)和可变类型(mutable type)。其中,不可变类型包括数值类型(分为整数类型和浮点数类型(整数类型如Int32、Int64 UInt32、UInt64 ,浮点类型如Float32 、 Float64)、Rune 类型、Bool 类型、Unit 类型、Nothing 类型、String 类型、元组(Tuple)类型、Range 类型、函数(Function)类型、enum 类型;可变类型包括 Array 类型、VArray 类型、struct 类型、class 类型和 interface 类型。

不可变类型和可变类型的区别在于:不可变类型的值,其数据值一经初始化后就不会发生变化;可变类型的值,其数据值初始化后仍然有可以修改的方法。

☆ 仓颉是静态类型语言

变量类型在编译时就固定,之后不能变。例如:

let age: Int = 25  // 这个age盒子只能装整数,装字符串会直接报错

如果后面你写 age = "hello",编译器会报错。

☆ 仓颉是强类型语言

不同类型之间不能直接混用,除非显式转换。例如

let a: Int = 5

let b: Float = 3.14

let c = a + b  // ❌ 报错!不能直接相加

// 正确做法:

let c = Float(a) + b  // ✅ 显式转换

☆ 不可变类型 vs 可变类型

不可变:值一旦设定,内存里的数据永远不变,修改变量=创建新值,保证数据安全性(尤其多线程场景)。

可变:内存里的原数据可以直接被修改(无需频繁创建新对象)。

例如:

main(): Int64 {// ---------------- 不可变:String ----------------let s1 = "hello"  // let用于定义不可变变量println(" s1 = ${s1}")      var sA = "Hi"  // var用于定义可变变量println(" sA = ${sA}") sA = s1 + ", world"  //修改变量=创建新值println(" sA = ${sA}") // ---------------- 可变:Array<Int64> ------------let arr1: Array<Int64>  = ([1, 2, 3])let arr2 = arr1          // arr2 与 arr1 指向同一块内存println(" arr2 = ${arr2}")     arr1[0] = 10;  // 索引0的元素从1变为10println(" arr1 = ${arr1}")  return 0
}

输出如下:

 s1 = hello
sA = Hi
sA = hello, world
arr2 = [1, 2, 3] 
arr1 = [10, 2, 3]

仓颉是一种静态强类型编程语言,其类型系统分为不可变和可变两类。静态类型特性要求变量类型在编译时确定且不可更改,强类型则禁止隐式类型转换。不可变类型(如数值、字符串等)的值初始化后不可修改,修改变量会创建新值;可变类型(如数组、类等)则允许直接修改内存数据。

http://www.dtcms.com/a/304834.html

相关文章:

  • 如何用USRP捕获手机信号波形(下)协议分析
  • 小孙学变频学习笔记(十二)机械特性的调整 机械特性的改善
  • 山东重工集团:以全自动化生产重构重卡制造业新范式
  • Docker运行Ollama
  • stm32的can总线
  • 简历美容院:如何把“打杂经历“包装成“核心项目“?
  • 在Word和WPS文字中把全角数字全部改为半角
  • 《使用Qt Quick从零构建AI螺丝瑕疵检测系统》——7. AI赋能(上):训练你自己的YOLOv8瑕疵检测模型
  • 城市元宇宙:未来城市治理的革新路径
  • 【数据结构初阶】--二叉树(四)
  • 硬件学习笔记--73 电能表新旧精度等级对应关系
  • 温室材料:构筑绿色梦想的基石
  • LRU(Least Recently Used)原理及算法实现
  • Qt 移动应用发布与分发指南
  • Stable Diffusion推导与理解:从文本到图像的生成革命
  • 不用编程序无需联外网,将罗克韦尔(AB)PLC的标签数据存入SQL数据库
  • 以需求破局:DPVR AI Glasses 重塑 AI 眼镜产业生态
  • Apache Ignite 关于 **Executor Service(执行器服务)** 的介绍
  • Zynq SOC FPGA嵌入式裸机设计和开发教程自学笔记:GPIO扩展与中断控制技术,万字详解!!
  • 墨者:SQL注入下的文章汇总
  • AUTOSAR进阶图解==>AUTOSAR_SRS_LIN
  • 【LoRA微调】采用Lora微调时,假设设置的rank值为8,那么在微调时只会调整秩在8以下的矩阵还是只会调整秩等于8的矩阵
  • C++基础:模拟实现queue和stack。底层:适配器
  • openbmc 阈值sensor分析
  • 第二课 P-MOS管应用
  • 洛谷 P11227 [CSP-J 2024] 扑克牌
  • 微算法科技(NASDAQ:MLGO)应用区块链联邦学习(BlockFL)架构,实现数据的安全传输
  • Ika Network 正式发布,让 Sui 智能合约可管理跨链资产
  • 格雷码的应用场景
  • 光环云在2025WAIC联合发布“AI for SME 全球普惠发展倡议”