ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

仓颉小智实践清单:数字、字符串、元组、数组与Option可选类型完全解析(附可运行示例)

仓颉小智实践清单:数字、字符串、元组、数组与Option可选类型完全解析(附可运行示例) 仓颉小智实践清单数字、字符串、元组、数组与Option可选类型完全解析附可运行示例【免费下载链接】仓颉小智项目地址: https://gitcode.com/Cangjie-TPC/cangjiexiaozhi仓颉小智Cangjie-TPC / cangjiexiaozhi是一个基于大模型 RAG 知识库的仓颉语言智能助手本仓库通过 docs/dev_guide.md 等文档为模型提供仓颉语言开发知识库并配套 IDEA 插件 plugins/idea/。本文从新手视角出发带你一次性吃透仓颉语言最基础的 5 类核心数据类型数字、字符串、元组、数组与 Option 可选类型并附上可直接运行的示例代码。数字类型整数与浮点数的正确打开方式 仓颉的整数分为有符号Int8~Int64、IntNative和无符号UInt8~UInt64、UIntNative完整表示范围见整数类型章节。浮点数则提供Float16、Float32、Float64三种精度。新手记忆清单整数字面量无类型上下文时默认推断为Int64无需手动转换支持二进制0b、八进制0o、十六进制0x前缀还可用_分隔位数可用后缀精确指定类型100i8Int8、0x10u64UInt64、3.14f32Float32var x 100i8 // Int8 var y 0x10u64 // UInt64值为 16 var z 0o432i32 // Int32值为 282 let a: Float32 3.14 let e: Float64 0x1p2 // 十六进制浮点值为 4.0 提示值超出类型范围时编译器会直接报错例如let x: Int8 128是非法的这能帮你提前发现溢出隐患。更多字面量细节可查阅浮点类型章节。字符串类型三种字面量与 ${} 插值一步到位 仓颉的String由 Unicode 字符组成支持单行、多行和多行原始三种字面量字符类型则叫Rune。最实用的特性是插值字符串用${}直接把表达式嵌进字符串告别繁琐拼接。let s1 Hello Cangjie Lang // 单行字面量 let s2 Hello, Cangjie Lang // 多行字面量 let s3 ###\n## // 多行原始字面量\n 不会被转义 let fruit apples let count 10 println(There are ${count * count} ${fruit}) // 输出There are 100 apples常用操作包括判等、拼接、contains判断包含、split按分隔符拆分等let s1 abc let s2 ABCabc println(s2.contains(s1)) // true println(s2.split(s1)[1]) // ABC 与 abc 之间的空串字符串的完整操作列表参见字符串类型章节。元组类型把不同类型打包成不可变组合 元组Tuple能把多个不同类型组合成一个新类型写作(T1, T2, ..., TN)至少是二元、长度固定且整体不可变可整体替换不能改单个元素。var pi (3.14, PI) println(pi[0]) // 3.140000 println(pi[1]) // PI // 元组可给元素标记类型参数名提升可读性 func getFruitPrice(): (name: String, price: Int64) { return (banana, 10) }实践要点用t[0]、t[1]这类常量下标访问元素下标必须是字面量类型参数名如name、price只能全部写或全不写不能混用函数返回多个值时元组是天然的轻量返回结构元组规则详见元组类型章节。数组 Array字面量初始化与 Lambda 构造 仓颉用ArrayT表示有序同类型序列用方括号字面量即可初始化编译器会自动推断元素类型var a: ArrayInt64 [0, 0, 0, 0] let b [1, 2, 3, 3, 2, 1] // 自动推断为 ArrayInt64 let c ArrayInt64(3, repeat: 0) // 长度 3元素全为 0 let d ArrayInt64(3, {i i 1}) // 用 Lambda 初始化元素为 1、2、3遍历用for-in取长度用size属性无需括号main() { let arr [0, 1, 2] for (i in arr) { println(The element is ${i}) } println(The size of array is ${arr.size}) }如果长度需要动态变化使用ArrayListT需import std.collection.ArrayList。数组的完整用法见数组类型章节。Option 可选类型彻底告别空值恐慌 OptionT是仓颉的泛型枚举只有两个构造器Some(T)表示有值、None表示无值。OptionT也可简写为?Tlet a: OptionInt64 Some(100) let b: ?Int64 None let c: OptionString 100 // 上下文已知为 Option 时可直接赋值 let d NoneInt64 // 无类型上下文时用 NoneT 显式指定仓颉提供了 4 种解构 Option 的常用姿势方式写法说明模式匹配match (a) { case Some(x) ... case None ... }显式区分有值/无值合并操作符a ?? 0为None时返回默认值问号操作符a?.toString()链式安全访问中间任一环节为None则整体为NonegetOrThrowa.getOrThrow()有值返回值None时抛异常一个贴近实际的小例子——安全处理可能缺失的年龄main() { let age: ?Int64 None let result age ?? 18 // 兜底默认值 println(result) // 18 let opt Some(5) match (opt) { case Some(x) println(年龄是 ${x}) case None println(年龄未知) } }Option 的完整定义与用法参见Option 类型与使用 Option两个章节。新手速查清单 ✅数字默认Int64后缀i8/u64/f32等可精确指定类型字符串${}插值 contains/split覆盖 90% 日常需求元组(a, b)打包异构数据下标必须为常量字面量数组[1, 2, 3]字面量最快动态场景用ArrayListTOption用?T声明可空值用??、?.、match安全解构以上示例均整理自仓颉语言开发指南如需查询标准库 API 可继续参考cangjie_std_doc.md、cangjie_tools_doc.mdIDEA 插件源码在 plugins/idea/xiaozhi/src/main/kotlin/。建议把这些类型知识直接喂给仓颉小智知识库让 AI 助手在写代码时输出更规范的仓颉代码 【免费下载链接】仓颉小智项目地址: https://gitcode.com/Cangjie-TPC/cangjiexiaozhi创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表