初识鸿蒙之ArkTS基础

前言

学习一种应用程序开发,需要从这种程序的开发语言开始,比如说Android开发从入门到放弃,肯定是从Java基础或者是Kotlin语言基础开始学习的,IOS程序开发也肯定是从object-c开始学习的。鸿蒙软件开发也不例外,如果做鸿蒙软件开发,那么就需要我们从ArkTS开始学习了。笔者这里不再赘述什么JavaScript、TypeScript、ArkTS的发展历程和各种包含包括的关系了,下面我们直接进入正题。

基本数据格式


/*** 数据类型 文本类型数据*/let msg: string = '文本类型数据'
console.log(TAG,'msg: '+msg)
/*** 数字类型数据*/
let age: number = 18
console.log(TAG,'age: '+age)/*** 布尔类型数据*/
let isBoy:boolean = true
console.log(TAG,'isBoy: '+isBoy)/*** 联合类型*/
let union: string | number | boolean = 'union'
console.log(TAG,'union: '+union)
union = 35
console.log(TAG,'union: '+union)

ArkTS 支持了string、number、boolean、any、以及联合类型,如上面的代码,把这些代码在方舟编译器上面运行一下,得到如下结果:
在这里插入图片描述
在这里你可能会发一个问题,我们在上一篇文章的代码的所有括号外面进行了编程,并且可直接运行,相当于Java代码方便了许多。可以在一个文件内直接运行。对了,这里有一点需要注意下,下图中红框内的代码不要删除,至于为什么在之后的文章会说到。
在这里插入图片描述

定义数组


/*** 定义数组类型*/
let names: Array<string> = ['张三', '李四']
let ages: number[] = [18, 22, 30, 35]
console.log(TAG,"names: "+names)
console.log(TAG,"ages: "+ages)

效果如下:
在这里插入图片描述

if判断语句使用

/*** if 使用 == 判断等于可能涉及类型转换;正常比较两个元素是否相等 推荐使用 ===* Ts 中空串、数字0、null、undefined 都被认为是false*/
if (names[0] === '张三') {console.log(`names 第一个是 ${names[0]}`)
} else {console.log('输入数据正确')

这里注意一点 ArkTS 中空串、数字0、null、undefined 都被认为是false,这里在日后的代码中还是很方便的。

switch语句

/*** switch 的每个case 需要大括号*/switch (ages[0]) {case 0: {console.log('是0')break}case 15: {console.log('是15')break}default: {console.log('是18')break}
}

这里有一点是:switch 的每个case 需要大括号。

方法创建(函数创建)


/**
*无返回值 函数
*/function test(name): void {console.log(`测试函数:${name}`)
}/**
* 调用函数
*/
test("Ts无返回值函数")/**
* 有返回值函数
*/
function testAdd(x: number, y: number): number {return x + y
}let result = testAdd(12, 25)
console.log(`result: ${result}`)/**
* 可选参数的函数
*/
function select(name?: string) {console.log(`箭头函数:${name ? name : '没有参数'}`)
}select()/**
* 默认参数的函数
*/
function def(name: string = '默认参数') {console.log(`箭头函数:${name}`)
}def()

方法创建时需要用基本格式为:


function 方法名称(参数名称:参数类型=默认值(可选)):返回值类型{
//方法体 TODO: 需要执行的内容
return 返回值
}

这里的定义方式和Java定义方法基本类似,但是也有不同点:
1、方法需要用 function 关键字;
2、参数可以添加默认值;
3、返回值类型写在方法参数括号后面,属于先命名、再参数、再返回,更符合我们的主观逻辑。
4、这里还用到了一个新的字符串拼接方式 :反引号内用${}的方式直接将参数拼接到字符串内,类似于Kotlin内字符串拼接,笔者认为这种方式比用加号的方式拼接的更加方便,各位朋友后面开发过程中可尝试一下。
5、没有返回值的用vod。

箭头函数(箭头方法)


/*** 箭头函数*/let hoTest = (name: string) => {console.log(`箭头函数:${name}`)
}/*** 箭头函数调用*/
hoTest('箭头')

这里使用了(参数)=>{}的方式创建了一个函数,并且将这个函数赋值给了一个变量,这样在之后的代码操作中方便调用。

枚举


/*** 枚举*/
enum Msg {HI = 'hi',HELLO = 'hello'
}

接口和类

/*** 接口*/
interface A {a(msg: Msg): void
}/*** 类*/
class B implements A {a(msg: Msg) {console.log(`Msg: ${msg}`)}
}
//多态 初始化
let a: A = new B()
//调用方法
a.a(Msg.HI)//相对复杂的类
class People {private age: numberprivate name: string//构造函数constructor(age: number, name: string) {this.age = agethis.name = name}public work(name: string): void {//如果这里不加this 会调用文件里面的 name 和 age 并不是调用类内的数据console.log(`姓名:${this.name} , 年龄:${this.age} , 工作:${name}`)}
}//继承父类
class Teacher extends People {constructor(age: number) {//调用父类构造方法super(age, '教师')}
}let t: People = new Teacher(35)
t.work('教书育人')

这里的接口和类与Java代码类似,ArkTS的接口声明使用 interface 关键字,接口的实现使用 implements 关键字,类的声明使用 class 关键字,类的继承使用 extends 关键字。这些都和Java属于一模一样的,而且一个类可实现多个接口,但是只能继承一个类,同时也支持多态等,毕竟都是面向对象的编程语言。所以面向对象编程的三要素都是具备的。以上所有代码执行结果如下:
在这里插入图片描述

总结

笔者认为到这里,就可以写一些基础的ArkTS的小项目了,对了以后关于公众号的鸿蒙代码都会上传码云,项目地址为:鸿蒙demo地址

最后欢迎大家关注我的 VX 公众号: 韩小怂请添加图片描述

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

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

相关文章

【scikit-learn003】K近邻ML模型实战及经验总结(更新中)

1.一直以来想写下基于scikit-learn训练AI算法的系列文章&#xff0c;作为较火的机器学习框架&#xff0c;也是日常项目开发中常用的一款工具&#xff0c;最近刚好挤时间梳理、总结下这块儿的知识体系。 2.熟悉、梳理、总结下scikit-learn框架K近邻&#xff08;K-Nearest Neighb…

机器学习(五) ----------集成学习(1)(集成学习思想+随机森林算法)

目录 1 核心思想 2 集成学习思想分类 2.1 Bagging&#xff08;Bootstrap aggregating&#xff09; 2.1.1 基本思想 2.1.2 特点 2.1.3 优点&#xff1a; 2.1.4 缺点&#xff1a; 2.2 Boosting&#xff08;Boosting Method&#xff09; 2.2.1 基本思想 2.2.2 特点 2.2.…

Vue3+TS实现将html或富文本编辑器转为Word并下载

说明&#xff1a;我用的富文本编辑器是wangEditor&#xff1a; wangEditor官网 安装 yarn add wangeditor/editor # 或者 npm install wangeditor/editor --save yarn add wangeditor/editor-for-vuenext # 或者 npm install wangeditor/editor-for-vuenext --save yarn add …

Git版本控制工具的原理及应用详解(二)

本系列文章简介&#xff1a; 随着软件开发的复杂性不断增加&#xff0c;版本控制成为了开发团队中不可或缺的工具之一。在过去的几十年里&#xff0c;版本控制工具经历了各种发展和演变&#xff0c;其中Git无疑是目前最受欢迎和广泛应用的版本控制工具之一。 Git的出现为开发者…

金万维动态域名小助手怎么用?

金万维动态域名小助手是一个域名检测工具&#xff0c;使用此工具可以进行检测域名解析是否正确、清除DNS缓存、修改DNS服务器地址及寻找在线客服&#xff08;仅支持付费用户&#xff09;等操作。对不懂网络的用户是一个很好的检测域名的工具&#xff0c;下面我就讲解一下金万维…

Java聚合项目打包运行笔记

聚合项目创建 略 聚合项目打包配置 父工程 pom文件添加 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>…

[初学者来练]用html+css+javascript个人博客作业需求

文章目录 项目概述项目需求页面设计主页文章列表页文章详情页用户交互额外功能&#xff08;可选&#xff09; 技术要求提交要求评分标准文件代码格式提示HTML 页面结构CSS 样式设计JavaScript 交互功能 项目概述 这个项目旨在通过使用HTML、CSS和JavaScript创建一个简单而功能…

【贪心算法】【Python实现】最优装载问题

文章目录 [toc]问题描述形式化描述 贪心算法贪心选择性质最优子结构性质 Python实现时间复杂性 问题描述 有一批集装箱要装上一艘载重量为 c c c的轮船&#xff0c;其中集装箱 i i i的重量为 w i w_{i} wi​在装载体积不受限制的情况下&#xff0c;将尽可能多的集装箱装上轮船…

SSM学习路线推荐

文章目录 时间安排javawebjdbcspring5springMVCMyBatis 前两天有朋友问我ssm怎么学的&#xff0c;去翻了翻当时学完之后记的总结 友情提示&#xff1a;该文主要分享自己看过的b站免费视频评价&#xff0c;仅代表个人观点 时间安排 因为已经过去好久了&#xff0c;只能凭记忆想…

Java基础(35)网站前端优化技术

网站前端优化是一个持续的过程&#xff0c;涉及多个方面的技术策略。深入详细的前端优化可以大致分为以下几个方面&#xff1a; 1. 代码优化 最小化和压缩资源 CSS/JS压缩&#xff1a;使用工具如UglifyJS、Terser、CSSNano等去除代码中的空格、注释&#xff0c;减少文件大小…

【微信小程序开发(从零到一)【婚礼邀请函】制作】——任务分析和效果实现的前期准备(1)

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

深入浅出Java中的数据结构:LinkedHashMap详解

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。运营社区&#xff1a;C站/掘金/腾讯云&#xff1b;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一…

hive获取这周五到下周四的区间,周一到周日的区间

-- 获取每个日期所在周期的开始和结束时间 SELECTcreated_date AS date_in_period,CASEWHEN date_format(created_date, u) < 5 THEN date_sub(created_date, cast(date_format(created_date, u) AS INT) 2)ELSE date_sub(created_date, cast(date_format(created_date, u)…

通过windows远程桌面,远程连接CentOS系统

1.配置阿里云的YUM仓库 1.1 备份当前的YUM仓库配置文件 sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup1.2 下载阿里云的CentOS仓库配置文件 对于CentOS 7&#xff1a; sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirr…

[第五空间 2021]WebFTP

目录扫描git泄露phpinfo.php 一开始想到是sql注入&#xff0c;但是不行。目录扫描&#xff0c;发现 .git 和 phpinfo.php 访问phpinfo.php&#xff0c;ctrlf 搜索 flag&#xff0c;找到 flag。

Vue 封装axios

【一】准备工作 &#xff08;1&#xff09;安装必要插件 安装Axios&#xff0c;这是必要的。默认最新版 npm install axios -S 或 cnpm install axios -S安装elementui-plus&#xff0c;用于提示信息 npm install element-plus --save # 或 cnpm install element-plus --s…

风电功率预测 | 基于RF随机森林的风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测完整代码风电功率预测 基于随机森林(Random Forest, RF)的风电功率预测是一种常用且有效的方法。以下是基于RF的风电功率预测的一般步骤: 数据准备:收集与风电场发电功率相关的数据,包括风速、风向、温度、湿度等气象数据以及风电场的历史功率数…

第七篇 Asciidoc中使用PlantUML 绘制各种示意图

示意图的特点 示意图表示的是大体上描述或表示物体的形状、相对大小、物体与物体之间的联系(关系),描述某器材或某机械的大体结构和工作的基本原理,描述某个工艺过程简单图示都叫做示意图。 示意图的特点就是简单明了,它突出了重点,忽略很多次要的细节。老师上课时在黑板…

MKS 电源 :EDGE 30R40A 400kh 现货 功能正常

MKS 电源 :EDGE 30R40A 400kh 现货 功能正常

Java注解的作用

注解介绍 Java注解是从Java5开始添加到java中的。 Java的注解可以说成是一种标记&#xff0c;标记一个类或者一个字段&#xff0c;经常是和反射&#xff0c;AOP结合起来进行使用。一般是定义一个注解&#xff0c;如果某个被注解的类或者字段符合条件&#xff0c;就执行某些能…