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