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

news2024/11/18 21:39:26

目录

前言

基本概念

标识符

变量

类型

基础数据类型

表达式

if 表达式

while 表达式

for-in 表达式

程序结构

函数

定义函数

调用函数

lambda表达式

应用实例(遍历目录)

枚举

定义与实例化

成员访问规则

match表达式

应用实例(表达式计算)

Option

结构体

定义与实例化

成员访问规则

应用实例(二叉树)

定义与实例化

成员访问规则

继承

属性

值类型与引用类型

接口与扩展

接口

实现接口

扩展

泛型

异常处理

异常类型

构造和抛出异常

异常处理

并发编程

线程模型

创建线程

应用实例(估算圆周率)

跨语言互操作

仓颉 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 字符串和指针

应用实例

概述

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

定义与调用

在编译时修改程序

应用实例(语言扩展)

总结

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

仓颉入门教程:华为开发者学堂

白皮书:文档中心

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

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

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

相关文章

【Arduino】实验使用ESP32单片机点亮OLED屏幕(图文)

一般我们使用单片机开发多数都是使用的lcd屏幕,由于lcd屏幕体积较大,并且显示的分辨率较低,显示效果并不是很好,今天小飞鱼就实验了使用ESP32连接oled屏幕进行显示,oled屏幕具有分辨率高、体积小、显示色彩丰富的特点&…

Kompas AI数据分析与预测功能对比

一、引言 在现代商业环境中,数据分析与预测是企业制定战略决策的关键工具。通过对大量数据的分析,企业能够识别趋势、预测未来变化,并做出更为明智的决策。本文将对比Kompas AI与其他主要AI产品在数据分析与预测方面的能力,展示K…

专利、论文免费检索

数字资源 - 资源导航 - 深圳图书馆 (szlib.org.cn)https://www.szlib.org.cn/digitalResource/index.html

uniapp - 微信小程序 - 自定义底部tabbar

废话不多说&#xff0c;直接行源码 这里需要的底部tabbar的图片在这里 我的资源里面呢 图片是这样的 先看成品吧 首先 - BaseApp\components\Tabbar.vue <script setup>import {ref,nextTick,watch} from "vue"// 核心 - 隐藏uniapp自带的底部tabbaruni.hi…

聚星文社AI工具

聚星文社AI工具是一种基于人工智能技术开发的工具&#xff0c;旨在辅助作者和写作人员提升创作效率和质量。 点击下载 该工具可以提供多项功能&#xff0c;包括语法纠错、智能推荐、文章自动摘要等。 通过使用聚星文社AI工具&#xff0c;用户可以在写作过程中得到即时的纠错建…

上海慢病管理app开发的意义及功能

近年来&#xff0c;随着经济与科技的不断发展&#xff0c;人们对慢性疾病的重视程度也不断提高。大家不再满足于周期较长的定期检查&#xff0c;而是渴求能够进行短期、实时的病情预防与监测&#xff0c;为了满足人们的需求&#xff0c;帮助大家更好的干预病情&#xff0c;上海…

说出这11种API接口性能优化,面试官一定会对你刮目相看

前言 接口性能优化是后端开发人员经常碰到的一道面试题&#xff0c;因为它是一个跟开发语言无关的公共问题。 这个问题既可以很简单&#xff0c;也可以相当复杂。 有时候&#xff0c;只需要添加一个索引就能解决。 有时候&#xff0c;代码需要进行重构。 有时候&#xff0c;必…

今年哪两个行业可能有贝塔?

银行和综合板块存在比较明显的行业贝塔&#xff0c;背后原因是&#xff1a;银行板块中&#xff0c;最小的几家银行市值也不小&#xff1b;综合板块中&#xff0c;最大的几家市值也不大。 一、今年哪两个行业可能有贝塔&#xff1f; 我们一直强调今年市场呈现出【行业弱beta、风…

四步轻松搞定!探索字节最新AnimateDiff-Lightning:高质量视频生成的秘密武器!

字节前脚刚发布了文生图大模型 SDXL-Lightning&#xff0c;后脚就又对文生视频领域下手了。 就在这几天又推出了文生视频模型&#xff1a;AnimateDiff-Lightning&#xff0c;它是一种快速的文本到视频生成模型。它生成视频的速度比原始 AnimateDiff 快十倍以上&#xff0c;只需…

二种方法轻松提取音频中的钢琴声音

在音乐制作、音频编辑或是纯粹的音乐爱好者的世界里&#xff0c;有时我们需要从复杂的音乐编排中抽取出特定乐器的声音&#xff0c;比如那悠扬的钢琴旋律。这不仅能帮助我们更好地理解音乐的结构&#xff0c;还能在创作过程中提供灵感。本文将介绍两种简单有效的方法&#xff0…

【AI绘画】ComfyUI相见恨晚的提示词插件,简直堪称神器!

大家好我是极客菌&#xff01;之前我曾介绍过一款专为SD设计的中文提示词插件——prompt-all-in-one&#xff0c;想必使用过的小伙伴们都已经感受到了它的便捷与实用吧。 不过&#xff0c;那款插件是基于webUI版本的&#xff0c;而现在&#xff0c;越来越多的朋友开始探索Comf…

Axure RP 9 安装详细笔记

一、下载 1.官网下载地址 Axure RP 9 MAC正式版&#xff1a;https://axure.cachefly.net/versions/9-0/AxureRP-Setup-3740.dmgAxure RP 9 WINDOWS正式版&#xff1a;https://axure.cachefly.net/versions/9-0/AxureRP-Setup-3740.exe2.网盘下载 链接&#xff1a;https://pa…

SaaS行业的发展与前景

随着互联网技术的飞速发展&#xff0c;云计算逐渐成为新一代信息技术的重要方向。作为云计算的一种服务模式&#xff0c;SaaS&#xff08;Software as a Service&#xff0c;软件即服务&#xff09;已经深入到企业级应用和个人消费市场&#xff0c;成为全球软件产业的新趋势。在…

基于微信小程序的在线点餐系统【前后台+附源码+LW】

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 点餐小程序&#xff0c;主要的模块包括实现管理员&#xff1b;管理员用户&#xff0c;可以对整个系统进行基本的增删改查&#xff0c;系统的日…

SAP系统中如何用事务码图形视图寻找MD04增强开发实施点

在之前发布的文章中&#xff0c;介绍了善用事务码的图形视图以观察事务的执行流程以及如何在MD04中实施增强以改变生产订单的显示顺序。本文结合两者&#xff0c;介绍一下如何利用事务码的图形视图找到增强开发的实施点。 在事务码中输入SE93&#xff0c;进入图形视图&#xf…

无人门店社区拼团小程序系统源码

​打造便捷购物新体验 &#x1f6d2; 引言&#xff1a;社区购物新趋势 随着科技的飞速发展&#xff0c;无人门店和社区拼团已经成为购物的新趋势。而结合这两者的“无人门店社区拼团微信小程序”更是为我们带来了前所未有的便捷购物体验。无需排队、无需现金交易&#xff0c;只…

避开常见的坑,快速制作一个免费、交互式景区导游地图

目录 1 前言 2 注册登录 3 增加景区&#xff0c;注意设置地图中心点和级别 3.1 确定地图位置和缩放级别 3.2 新增景区&#xff0c;输入几个文本项目 3.3 可以继续调整地图位置和级别 4 增加景点 4.1 点击景点跳转错误 5 新增景区和景点介绍帖子&#xff0c;需要催一下…

GPT-4o背后的秘密:深入了解它的运作方式

GPT-4o是OpenAI最新推出的多模态大模型&#xff0c;它在语言处理、图像识别和音频处理方面都实现了重大突破。GPT-4o的"o"代表"omni"&#xff0c;意为全能&#xff0c;能够处理文本、音频、图像和视频输入&#xff0c;是一种高度集成的神经网络。这篇文章将…

1991-2023年 上市公司-财务指标数据整理

上市公司财务指标数据为投资者、分析师、企业管理人员等提供了评估公司价值和做出决策的重要依据。这些数据和指标能够反映公司的财务状况、经营成果和未来发展潜力。以下是对上市公司财务指标数据的详细介绍&#xff1a; 数据简介 定义&#xff1a;上市公司财务指标数据包括…

SAP BADI增强示例:在COOIS中增加额外字段显示

SAP ERP系统中的COOIS报表&#xff08;订单信息系统&#xff09;提供了有关生产订单的完整信息。本文主要谈及如何使用BADI在COOIS的输出显示中添加额外字段。为实现此目的&#xff0c;必须预先为表头结构IOHEADER中添加物料组&#xff08;MATKL&#xff09;字段&#xff0c;如…