华为仓颉编程语言正式发布,仓颉编程教程

目录

前言

基本概念

标识符

变量

类型

基础数据类型

表达式

[if 表达式](#if 表达式)

[while 表达式](#while 表达式)

[for-in 表达式](#for-in 表达式)

程序结构

函数

定义函数

调用函数

lambda表达式

应用实例(遍历目录)

枚举

定义与实例化

成员访问规则

match表达式

应用实例(表达式计算)

Option

结构体

定义与实例化

成员访问规则

应用实例(二叉树)

定义与实例化

成员访问规则

继承

属性

值类型与引用类型

接口与扩展

接口

实现接口

扩展

泛型

异常处理

异常类型

构造和抛出异常

异常处理

并发编程

线程模型

创建线程

应用实例(估算圆周率)

跨语言互操作

[仓颉 C 互操作基本步骤](#仓颉 C 互操作基本步骤)

类型映射(基础类型)

类型映射(其他类型)

应用实例

概述

定义与调用

在编译时修改程序

应用实例(语言扩展)

总结


前言

华为在 2024 年 6 月 21 日的华为开发者大会上,华为终端 BG 软件部总裁龚体正式官宣了华为自研仓颉编程语言,并发布了 HarmonyOS NEXT 仓颉语言开发者预览版。

仓颉开发者官网:仓颉 | 华为开发者联盟

仓颉编程语言文件后缀名为 .cj , 以下是第一个入门代码输出:你好,仓颉

基本概念

标识符

变量

变量建一个名字和一个特定类型的值关联起来

类型

类型就像一份协议,规定了一块数据的组织结构及相应的解析/操作方式

基础数据类型

表达式

表达式是可以求值的程序元素,可用于变量赋值、函数传参和返回值等场景

if 表达式

while 表达式

for-in 表达式

程序结构

**包(package)**是仓颉程序的最小编译单元,一个包由一到多个源文件组成,在每个源文件中可以声明当前文件所属包,也可以导入其他包,由此实现程序的高效管理和复用

在包的顶层作用域中,可以定义一系列的变量、函数和自定义类型(枚举,结构体,类,接口),以及包的声明与导入等,其中的变量和函数被称为全局变量全局函数

在非顶层作用域中可以定义变量和函数,称为局部变量局部函数。自定义类型中的局部变量和函数,称为成员变量成员函数。

函数

定义函数

调用函数

lambda表达式

lambda表达式 可以让函数的创建和使用更加灵活,lambda表达式的值就是一个匿名函数

应用实例(遍历目录)

枚举

定义与实例化

成员访问规则

match表达式

应用实例(表达式计算)

Option

结构体

定义与实例化

成员访问规则

应用实例(二叉树)

定义与实例化

成员访问规则

继承

属性

值类型与引用类型

接口与扩展

接口

实现接口

扩展

泛型

异常处理

异常类型

仓颉提供了Exception和Error两个类型,用于描述程序运行时的异常行为

开发者可以继承Exception或其子类来自定义异常类,但不能继承Error或其子类。

构造和抛出异常

构造异常即是构造异常类实例,在throw关键字后接一个异常类实例,即可抛出此异常

异常处理

并发编程

线程模型

仓颉语言实现了M:N 轻量线程模型,支持在少量系统线程之上创建海量用户线程,在实现层面用户线程对应协程,仓颉runtime会自动管理和调度这些协程。

当用户线程t做I/O 等资源访问操作时,若资源尚未就绪,线程t就会被runtime挂起等待、并调入其他线程运行,当资源就绪后又会适时恢复t的执行,高效利用CPU 资源,实现高并发能力。

创建线程

应用实例(估算圆周率)

跨语言互操作

仓颉 C 互操作基本步骤

类型映射(基础类型)

在声明C 函数时,核心在于仓颉如何描述C 数据类型,因此我们需要知道C 与仓颉的类型映射关系

类型映射(其他类型)

在标准库中为CString和CPointer 扩展了一些成员函数,便于操作C 字符串和指针

应用实例

概述

在程序编译阶段,会产生很多有用的信息,可用于程序的分析、优化和功能扩展等。为此仓颉提供了"宏"特性,允许开发者介入编译过程,获取部分编译期信息并修改程序,可以实现埋点插桩、静态反射和语法扩展等功能

定义与调用

在编译时修改程序

应用实例(语言扩展)

总结

本篇文章例举了华为的新产品,仓颉编程,以及仓颉变成的基本使用方法和一些内置的操作方式,包括可以跨语言互操作,拥有并发编程等功能。
仓颉入门教程:华为开发者学堂

白皮书:文档中心

感谢大家的细心阅读,求三连

相关推荐
王码码20354 天前
Flutter for OpenHarmony:socket_io_client 实时通信的事实标准(Node.js 后端的最佳拍档) 深度解析与鸿蒙适配指南
android·flutter·ui·华为·node.js·harmonyos
Swift社区4 天前
如何利用 ArkUI 框架优化鸿蒙应用的渲染性能
华为·harmonyos
特立独行的猫a4 天前
uni-app x跨平台开发实战:开发鸿蒙HarmonyOS影视票房榜组件完整实现过程
华为·uni-app·harmonyos·轮播图·uniapp-x
特立独行的猫a4 天前
uni-app x跨平台开发实战:开发鸿蒙HarmonyOS滚动卡片组件,scroll-view无法滚动踩坑全记录
华为·uni-app·harmonyos·uniapp-x
不爱吃糖的程序媛5 天前
Flutter Orientation 插件在鸿蒙平台的使用指南
flutter·华为·harmonyos
不爱吃糖的程序媛5 天前
鸿蒙Flutter实战:Windows环境搭建踩坑指南
flutter·华为·harmonyos
不爱吃糖的程序媛5 天前
Flutter 插件适配 HarmonyOS 实战:以屏幕方向控制为例
flutter·华为·harmonyos
星空22235 天前
鸿蒙跨平台实战:React Native 在 OpenHarmony 上的 PixelFormat 图片格式处理
react native·华为·harmonyos
加农炮手Jinx5 天前
Flutter for OpenHarmony: Flutter 三方库 icon_font_generator 自动化将 SVG 图标集转化为字体文件(鸿蒙矢量资源全自动管理)
运维·flutter·华为·自动化·harmonyos·devops
以太浮标5 天前
华为eNSP综合实验之- 3a认证配置案例及解析(AAA认证)
运维·tcp/ip·网络安全·华为·信息与通信