初识鸿蒙之ArkTS基础

news2024/12/23 11:56:01

前言

学习一种应用程序开发,需要从这种程序的开发语言开始,比如说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: number
  private name: string

  //构造函数
  constructor(age: number, name: string) {
    this.age = age
    this.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.coloradmin.cn/o/1676839.html

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

相关文章

平衡三进制小数详解与进制转换

标准三进制是“逢三进一&#xff0c;退一还三”的机制&#xff0c;平衡三进制与之类似&#xff0c;但就是偏移了一下变得对称了&#xff0c;平衡三进制与标准三进制可以相互转换&#xff0c;但这样显得有点多余了&#xff0c;所以这里只讲平衡三进制与十进制的转换。 数字系统的…

meshlab: pymeshlab合并多个物体模型并保存(flatten visible layers)

一、关于环境 请参考&#xff1a;pymeshlab遍历文件夹中模型、缩放并导出指定格式-CSDN博客 二、关于代码 本文所给出代码仅为参考&#xff0c;禁止转载和引用&#xff0c;仅供个人学习。 本文所给出的例子是https://download.csdn.net/download/weixin_42605076/89233917中的…

【微记录】dmidecode是干什么的?常用来做什么?如何查看系统支持的PCIe版本号(本质:标准,Desktop Management Interface)

是什么 dmidecode 是一个在 Linux 系统提取硬件信息的命令行工具。DMI 代表桌面管理接口&#xff08;Desktop Management Interface&#xff09;&#xff0c;是一种标准&#xff0c;收集桌面计算机的硬件信息&#xff0c;包括系统制造商、序列号、BIOS 信息、系统资产标签等。…

风电功率预测 | 基于PSO-BP神经网络实现风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测完整代码风电功率预测 基于粒子群优化算法(Particle Swarm Optimization, PSO)的BP神经网络是一种常见的方法,用于实现风电功率预测。下面是一个基于PSO-BP神经网络实现风电功率预测的一般步骤: 数据准备:收集与风电场发电功率相关的数据,包括…

C语言----斐波那契数列(附源代码)

各位看官们好&#xff0c;当我写了上一篇博客杨辉三角后&#xff0c;有一些看官叫我讲一下斐波那契数列。对于这个大家应该是有了解的。最简单的规律就是f(n)f(n-2)f(n-1)。就是当前是前两项之和&#xff0c;然后下标1和0都是1.从第三项开始计算的。那么我们知道规律&#xff0…

旧衣服回收小程序:探索旧衣回收市场的创新发展

每年我国就有将近800万吨旧衣服&#xff0c;在生活水平的日益提高下&#xff0c;这个数字也在逐渐增加。目前&#xff0c;我国旧衣回收的产业链也在完善中&#xff0c;旧衣服出口贸易逐年增加&#xff0c;市场发展空间不断扩大。此外&#xff0c;旧衣回收市场投入低、风险小、利…

SystemC学习使用记录

一、概述 对于复杂的片上系统&#xff0c;在进行RTL编码前&#xff0c;需进行深入的系统级仿真&#xff0c;以确认设计的体系结构是否恰当、总线是否能满足吞吐量和实现性要求以及存储器是否浪费&#xff0c;所进行的这些仿真要求在芯片的仿真模型上运行大量的软件&#xff0c…

PLL-分频器

概念 分频器的性能一般用四个参数来规定:(1)分频比&#xff0c;(2)最大允许输入频率fmax&#xff0c;(3)功耗&#xff0c;(4)最小允许输入电压摆幅(也叫“灵敏度”)。虽然分频器的相位噪声也很重要&#xff0c;但在大多数情况下它可以忽略不计。 把一般分频器的输入灵敏度画成…

微信支付商户的“商家转账到零钱”产品快速开通指南

微信支付商户的“商家转账到零钱”功能为商家提供了便捷的转账途径&#xff0c;尤其适用于费用报销、员工福利发放、合作伙伴货款或分销返佣等多种场景。那么&#xff0c;如何快速开通这一功能呢&#xff0c;需要快速开通的商户可以联系小编。 首先&#xff0c;确保你的企业已经…

C++基础与深度解析 | 表达式 | 操作符

文章目录 一、表达式基础1.表达式的值类别2.表达式的类型转换 二、表达式详述1.算术操作符2.逻辑与关系操作符3.位操作符4.赋值操作符5.自增与自减运算符6.其他操作符三、C17对表达式的求值顺序的限定 一、表达式基础 表达式由一到多个操作数组成&#xff0c;可以求值并 ( 通常…

Node.js 学习笔记 express框架

express express 使用express下载express 初体验 express 路由什么是路由1路由的使用验证的方法 2获取请求报文参数3获取路由参数4响应设置响应报文 express 中间件5中间件全局中间件路由中间件 6静态资源中间件注意事项案例 7请求体数据8防盗链实现防盗链 9路由模块化router E…

Linux: Make工具以及Makefile文件

make工具 人们通常利用 make 工具来自动完成编译工作。这些工作包括&#xff1a;如果仅修改了某几个源文件&#xff0c;则只重新编译这几个源文件&#xff1b;如果某个头文件被修改了&#xff0c;则重新编译所有包含该头文件的源文件。利用这种自动编译可大大简化开发工作&…

TreeMap详解:Java 有序 Map 原理与实现

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

论文解读:Self-Prompt Mechanism for Few-Shot Image Recognition

文章汇总 存在的问题 由于提示文本和图像特征之间固有的模态差异&#xff0c;常规的提示方法的性能受到限制。 动机 让视觉信息自己给自己提示 解决办法 SPM涉及到图像编码器跨空间和通道维度产生的固有语义特征的系统选择&#xff0c;从而产生自提示信息。随后&#xff…

【yolov8分类任务-全流程】【公开数据白内障-101:101例白内障手术的视频数据集】

文章目录 1.公开数据集1.1.白内障-101&#xff1a;数据集文件结构1.1.1.视频文件1.1.2.注释文件(1)videos.csv(2) phases.csv(3)annotations.csv 1.2. 数据处理1.2.1.抽帧脚本全部代码&#xff08;每行都有注释&#xff09;1.2.2.分类任务划分数据集脚本 2.yolov8分类任务训练2…

【教程】Jetson安装PyQt5和CUDA版OpenCV

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;请不吝给个[点赞、收藏、关注]哦~ 安装PyQt5 注意目前似乎只支持Python3.6&#xff01;&#xff01;&#xff01; sudo apt install pyqt5* -y sudo apt-get install python3-pyqt…

Java | Leetcode Java题解之第89题格雷编码

题目&#xff1a; 题解&#xff1a; class Solution {public List<Integer> grayCode(int n) {List<Integer> ret new ArrayList<Integer>();for (int i 0; i < 1 << n; i) {ret.add((i >> 1) ^ i);}return ret;} }

每日一题12:Pandas:数据重塑-融合

一、每日一题 解答&#xff1a; import pandas as pddef meltTable(report: pd.DataFrame) -> pd.DataFrame:reshaped_report report.melt(id_varsproduct, var_namequarter, value_namesales)return reshaped_report 题源&#xff1a;Leetcode 二、总结 melt()函数是Pa…

Python 机器学习 基础 之 监督学习 [线性模型] 算法 的简单说明

Python 机器学习 基础 之 监督学习 [线性模型] 算法 的简单说明 目录 Python 机器学习 基础 之 监督学习 [线性模型] 算法 的简单说明 一、简单介绍 二、监督学习 算法 说明前的 数据集 说明 三、监督学习 之 线性模型 算法 1、用于回归的线性模型 2、线性回归&#xff0…

SpringCloud------Feign,Geteway

Feign 所以我们使用一门新的技术&#xff1a;声明式的http客户端Feign 第一步&#xff1a;引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency> …