【鸿蒙开发 day13】

ArkTs-核心-基础

  • 一.处理数据
    • 1.字符串的拼接
    • 2.模板字符串
  • 二.类型转换
      • (1)字符串转数字
      • (2)数字转字符串
      • (3)布尔值转换情况
  • 三.交互点击事件
  • 四.状态管理
  • 五.隐藏图片案例
  • 六.运算符
    • 1.算数运算符
    • 2.赋值运算符
    • 3.一元运算符
    • 4.比较运算符
    • 5.逻辑运算符
    • 6.运算符优先级
  • 七.美团点餐案例
  • 八.数组的增删改查
  • 九.总结

一.处理数据

1.字符串的拼接

作用:拼接字符串和变量
写法:+
说明:
* 加号两侧有一个字符串,拼接,
* 加号的两侧都是数字,是加法运算
let name: string = '悟空'
let age: number = 500
console.log('name: ',name+age+'岁')
console.log('年龄',18+age+2)

运行结果:
在这里插入图片描述

2.模板字符串

作用:拼接字符串和变量
写法: ${变量}用反引号包裹

console.log('',`我的名字是${name}`)

二.类型转换

(1)字符串转数字

  • 使用Number()转换失败返回NaN
  • 只能将数值型字符串进行转换
//Number转换
console.log('Number',Number(str))
console.log('Number',Number(str1))
console.log('Number',Number(str2))

运行结果
在这里插入图片描述

  • 使用parseInt转换,小数点后面有字符串也可以转换成功
  • 只保留整数部分
    //parseInt转换 --只保留整数
console.log('parseInt',parseInt(str))
console.log('parseInt',parseInt(str1))
console.log('parseInt',parseInt(str2))

运行结果:
在这里插入图片描述

  • 使用parseFloat()进行转换
  • 转化成小数,小数点后可以存在字母
console.log('parseFloat',parseFloat(str))
console.log('parseFloat',parseFloat(str1))
console.log('parseFloat',parseFloat(str2))

运行结果:
在这里插入图片描述

(2)数字转字符串

  • tostring()
let num1: number = 1.3531
let num2: number = 1.4341console.log('',num1.toString())
console.log('',num2.toString())

运行结果:
在这里插入图片描述

  • 使用typeo关键字可以查看数据类型
  • toFixed():保留指定的小数位数(四舍五入)
let num1: number = 1.3531
let num2: number = 1.4341
//查看数据类型 typeof
console.log('',typeof num2.toString())
//toFixed(保留小数位数)
console.log('tofixed',num1.toFixed(2))
console.log('tofixed',num2.toFixed(2))

运行结果:
在这里插入图片描述

(3)布尔值转换情况

  • 方法Boolean()
  • 函数如果没有返回值,那么默认会返回一个undefined
  • false情况 - 0 false `` NaN null undefined
//转false情况console.log('',Boolean(NaN))
console.log('',Boolean(0))
console.log('',Boolean(``))
console.log('',Boolean(undefined))
console.log('',Boolean(false))

运行结果:
在这里插入图片描述

三.交互点击事件

说明:组件 被点击时 触发的事件
作用:监听(感知)用户 点击行为,进行对应操作
语法:onClick((参数)=>{
AlertDialog.show({
message:“这是一个点击事件”
})
})

@Entry
@Component
struct Index {build() {Column() {Button('点我显示对话框').onClick(() => {// console.log('',)AlertDialog.show({message: "这是一个弹框"})})Text('文本').onClick(() => {AlertDialog.show({message: '这是一个文本弹框'})})}}
}
@Entry
@Component
struct Index {@State name: string = '热巴'@State age: number = 18price: number = 9.99build() {Column({space:30}){Text(this.name).fontSize(30)//text组件中只能放字符串类型Text(this.age.toString()).fontColor(Color.Red)Text(this.price.toString())//点击事件: 在特定的时期做特定的事情//点击事件 在点击的时候,调用箭头函数,处理业务Button('修改变量值').onClick((event: ClickEvent) => {//修改状态变量--会引起UI更新this.name = '杨幂'this.age = 30//修改普通变量 -不会引起UI更新,但是变量的值确实修改了this.price = 6.6})}.width('100%').height('100%')}
}

运行结果:
点击前:
在这里插入图片描述
点击后:
在这里插入图片描述

四.状态管理

之前构建的页面多为静态界面。
但如果希望构建一个动态的、有交互的界面,就需要引入“状态”的概念

  • 普通变量:只能在初始化时渲染,后续将不会再刷新。
  • 状态变量:需要装饰器装饰,改变会引起 UI 的渲染刷新(必须设置 类型 和 初始值
  • 注意:定义在 组件内 普通变量 或 状态变量,都需要 通过 this 访问
  • 组件外的普通变量可以直接访问
  • 组件内的普通变量需要用this.变量名访问
@Entry
@Component
//状态变量: 需要通过装饰器修饰 数据改变的时候会引发UI渲染
//普通变量: 不需要装饰器,数据改变不会产生UI渲染
//访问变量都是使用this关键字
//状态变量必须进行初始化 必须指定数据类型
struct Index {@State name: string = '热巴'@State age: number = 18price: number = 9.99build() {Column(){Text(this.name).fontSize(30)//text组件中只能放字符串类型Text(this.age.toString()).fontColor(Color.Red)Text(this.price.toString())}}
}

运行结果:
在这里插入图片描述

五.隐藏图片案例

五个步骤:

  • 1.找到关联组件
  • 2.给关联组件设置点击事件
  • 3.设置状态变量,存储需要的值(初始化)
  • 4.状态变量和组件或属性建立关联
  • 5.事件中改变状态变量值
@Entry
@Component
struct Index {//3.设置状态变量,储存原本页面中初始化的值@State flagNum: number = 1build() {Column({space:30}){Image($r('app.media.startIcon')).width(50)//1.找到关联组件Button('隐藏图片').onClick((event: ClickEvent) => {//2.给关联组件设置点击事件//5.设置事件中要改变的值this.flagNum = 0}).fontSize(30)}.width('100%')//4.状态变量和组件或属性建立关联.opacity(this.flagNum)}
}

运行结果:
点击前
在这里插入图片描述
点击后:
在这里插入图片描述

六.运算符

1.算数运算符

  • 减法 -
  • 加法 +
  • 乘法 *
  • 除法 /
  • 取余 %
let num1: number = 10
let num2: number = 2console.log('求和', num1 + num2) //12
console.log('求差', num1 - num2) //8
console.log('求积', num1 * num2) //20
console.log('求商', num1 / num2) //5
console.log('取余', num1 % num2) //0

2.赋值运算符

let num1: number = 10
let num2: number = 2console.log('求和', num1 += num2) //12
console.log('求差', num1 -=num2) //8
console.log('求积', num1 *= num2) //20
console.log('求商', num1/=num2) //5
console.log('取余', num1 %= num2) //0

3.一元运算符

常见的一元运算符: ++ 和 –
后置写法: 先赋值,再自增或自减
前置写法: 先自增或自减,再赋值

let num: number = 1
let res: number = num++
console.log('num',num)//2
console.log('res',res)//1let num2: number = 10
let res2: number =++num2
console.log('num2',num2)
console.log('res2',res2)

运行结果:
在这里插入图片描述

4.比较运算符

> >= < <= == !=
复合比较运算符,只要有一个符合条件,那就是返回true
let num: number = 10
let num1: number = 20console.log('', num > num1) //false
console.log('', num >= num1) //false
console.log('', num < num1) //true
console.log('', num <= num1) //true
console.log('', num == num1) //false
console.log('', num != num1) //true

5.逻辑运算符

&& 短路与

  • 一假则假,从左开始去判断,如果第一个为假,那么直接终止,返回第一个值,如果全为真,返回最后一个值
    || 短路或
  • 一真则真,从左开始判断如果第一个为真,直接终止判断,返回第一个值,如果全为假,返回最后一个值
    ! 非,取反
  • 真变假,假变真
//短路与
let num: number = 10
let num1: number = 0
console.log('逻辑与', num && num1)//0
console.log('逻辑与', null && num1)//null
console.log('逻辑与', num && undefined)//undefined//短路或
console.log('逻辑或', num || num1)//10
console.log('逻辑或', null || num1)//0
console.log('逻辑或', num || undefined)//10
console.log('',null || NaN)// NaN

6.运算符优先级

在这里插入图片描述

七.美团点餐案例

@Entry
@Component
struct Index {
@State count:number = 1discount_price:number = 20.2//现价original_price:number = 40.4//原价build() {Column() {Column() {// 产品Row({ space: 10}){// 图片Image($r('app.media.product1')).width(100).borderRadius(8)// 文字Column({space: 10}) {Column({ space: 6}) {Text('冲销量1000ml缤纷八果水果捞').lineHeight(20).fontSize(14)Text('含1份折扣商品').fontSize(12).fontColor('#7f7f7f')}.width('100%').alignItems(HorizontalAlign.Start)Row(){// 价格Row({ space: 5}) {Text() {Span('¥').fontSize(14)Span('20.2').fontSize(18)}.fontColor('#ff4000')Text() {Span('¥')Span('40.4')}.fontSize(14).fontColor('#999').decoration({type: TextDecorationType.LineThrough, color: '#999'})}// 加减Row() {Text('-').width(22).height(22).border({width:1, color: '#e1e1e1', radius: {topLeft: 5, bottomLeft: 5}}).textAlign(TextAlign.Center).fontWeight(700).onClick(()=>{if(this.count>0)this.count--else{AlertDialog.show({message:'数量已经归零,不可以再减'})}})Text(this.count.toString()).height(22).border({width: { top:1, bottom: 1 }, color: '#e1e1e1'}).padding({left: 10, right: 10}).fontSize(14)Text('+').width(22).height(22).border({width:1, color: '#e1e1e1', radius: {topRight: 5, bottomRight: 5}}).textAlign(TextAlign.Center).fontWeight(700).onClick(()=>{this.count++})}}.width('100%').justifyContent(FlexAlign.SpaceBetween)}.height(75).layoutWeight(1).justifyContent(FlexAlign.SpaceBetween)}.width('100%').alignItems(VerticalAlign.Top).padding(20)// 结算Row({ space: 10 }){// 价格Column({space: 5}) {Text() {Span(`已选${this.count}件`).fontColor('#848484')Span('合计:')Span('¥').fontColor('#fd4104')Span((this.count*this.discount_price).toFixed(2)).fontColor('#fd4104').fontSize(16)}.fontSize(14)Text(`共减¥${(this.count*(this.original_price-this.discount_price)).toFixed(2)}`).fontColor('#fd4104').fontSize(12)}.alignItems(HorizontalAlign.End)// 结算按钮Button('结算外卖').width(110).height(40).backgroundColor('#fed70e').fontColor('#564200').fontSize(16).fontWeight(600)}.width('100%').height(70).backgroundColor('#fff').position({x:0, y: '100%'}).translate({y: '-100%'}).padding({ left: 20, right: 20 }).justifyContent(FlexAlign.End)}}.width('100%').height('100%').backgroundColor('#f3f3f3')}
}

八.数组的增删改查

  • 查找 数组名[下标]
  • 修改: 数组名[下标] = 新值
//定义一个数组
let arr: string[] = ['悟空','八戒','牛魔王']
//查找(悟空)
console.log('name: ',arr[0])
//修改牛魔王
arr[2] = '沙僧'
console.log('names: ',arr)

运行结果:
在这里插入图片描述

  • 增加元素
  • 数组名.unshift(数据1,数据2,…) 在开头增加元素
  • 数组名.push() 在结尾增加元素
  • 顺序都是拼接的顺序
//向前添加
arr.unshift('唐僧','牛魔王')
console.log('unshift',arr)//向后添加 push
arr.push('红孩儿','犀牛怪')
console.log('push',arr)

运行结果;
在这里插入图片描述

//删除前面的元素-只删除一个arr.shift()
console.log('shift',arr)
//删除后面的元素
arr.pop()
console.log('pop',arr)
//任意位置删除或添加元素
arr.splice(0,2,'黑神话','如来')
console.log('splice',arr)

运行结果
在这里插入图片描述

  • 数组长度: 使用数组名.length
  • 作用: 获取到数组的最后一个元素

九.总结

本章主要学习了字符串的拼接方法,数据类型的转换,交互点击事件,状态管理的概念以及业务场景,运算符,数组增删改查的方法及如何计算数组长度.

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

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

相关文章

游戏开发团队并非蚂蚁协作(3):开发过程中的“尾气”

“尾气”指的什么&#xff1f; 就像汽车虽然行驶到达目的&#xff0c;但是却会在路途中留下尾气污染环境。开发过程中有时虽然完成了需求&#xff0c;但是也留下了“尾气”&#xff0c;或者说“技术债”、“遗留问题”。 “尾气”并不是看不到或者难以被解决&#xff0c;而是…

【Linux】常用指令详解一(ls,-a,-l,-d,cd,pwd,mkdir,touch,rm,clear)

1.前言 读了一些Linux常用指令的博文&#xff0c;很可惜没读到一点点手把手教怎么操作的博文&#xff0c;所以写一篇手把手教适合初学者的Linux常用指令博文 Linux的命令是树状结构 输入这一句命令&#xff1a;yum install -y tree 即可以查看Linux树状目录结构 查看示例&am…

2024年中国研究生数学建模竞赛C题“数据驱动下磁性元件的磁芯损耗建模”全析全解

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 总领这个题&#xff0c;是属于数据挖掘和数据优化类型的题目&#xff…

Linux系统与服务构建运维

使用ext4文件系统格式化逻辑卷mylv。命令如下&#xff1a; 一、Linux操作系统安装 1.学习目标 &#xff08;1&#xff09;了解服务器操作系统安装。 &#xff08;2&#xff09;了解CentOS系统的安装。 2.节点规划 IP 主机名 节点 192.168.200.10 localhost Linux服务器…

HOSTS文件劫持--导致笔记本网络卡顿

写在前面&#xff1a; 因为笔记本网速卡顿&#xff0c;去维修店维修网卡&#xff0c;网卡咱们测试都没有问题&#xff0c;一直吐槽售后服务一般。自己也装过几次系统了 点击任务栏中的搜索图标&#xff0c;输入"cmd"&#xff0c;点击"命令提示符"选择&qu…

Vivado的.v文件被误分类到Non-module Files中[filemgmt 20-2001] Source scanning failed

报错 所有新创建的Design Sources被分类到Non-module Files中 两条报错 1、[filemgmt 20-2001] Source scanning failed (launch error) while processing fileset “sources_1” due to unrecoverable syntax error or design hierarchy issues. Recovering last known analys…

STM32(十七):I2C通信外设

I2C外设 STM32内部集成了硬件I2C收发电路&#xff08;USART是串口通信的硬件收发电路&#xff09;&#xff0c;可以由硬件自动执行时钟生成、起始终止条件生成、应答位收发、数据收发等功能&#xff0c;减轻CPU的负担。 支持多主机模型&#xff08;可变多主机&#xff…

python基础(二) 包和import

包的创建 文件创建命令 在 Django 中&#xff0c;python manage.py startapp first_app 这一行命令的作用是创建一个新的应用&#xff08;app&#xff09;&#xff0c;名为 first_app。在 Django 项目中&#xff0c;"app" 是实现某些功能模块的单独部分&#xff0c…

詹妮弗洛佩兹25年发9张专辑3张是关于阿弗莱克的,爱恨情仇之深可见一斑!新专辑已定时间表!

詹妮弗洛佩兹25年共发9张专辑&#xff0c;有3张是关于本阿弗莱克的 内部人爆詹妮弗洛佩兹已定制作与本阿弗莱克的“心碎”专辑时间表 虽然詹妮弗洛佩兹最近的专辑《This Is Me…Now》以失败告终&#xff0c;但她可能已经准备好重返音乐工作室。但这一次&#xff0c;她将推出一…

校园美食地图:Spring Boot实现的探索与分享平台

第1章 绪 论 1.1课题背景 2021年处于信息高速发展的大背景之下。在今天&#xff0c;缺少手机和电脑几乎已经成为不可能的事情&#xff0c;人们生活中已经难以离开手机和电脑。针对增加的成本管理和操作,商家非常有必要建立自己的网上校园周边美食探索及分享平台&#xff0c;这既…

【Java】Java开发全攻略:从环境搭建到高效编程

文章目录 前言&#xff1a;1. JDK组成2. 配置JDK的环境变量3. 选择开发工具3.1 使用文本编辑器 命令行3.2 Java的跨平台原理3.3 IntelliJ IDEA 开发工具3.3.1 IDEA 创建 Java项目的代码结构3.3.2 使用IDEA开发第一个Java程序的步骤3.3.2 IDEA安装AI编程插件3.3.3 IDEA常用快捷…

【CSS in Depth 2 精译_033】5.4 Grid 网格布局的显式网格与隐式网格(中)

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

pytorch的动态计算图机制

pytorch的动态计算图机制 一&#xff0c;动态计算图简介 Pytorch的计算图由节点和边组成&#xff0c;节点表示张量或者Function&#xff0c;边表示张量和Function之间的依赖关系。 Pytorch中的计算图是动态图。这里的动态主要有两重含义。 第一层含义是&#xff1a;计算图的…

Swin Transformer—使用平移窗口的分层视觉转换器结构

Swin Transformer解读 论文题目&#xff1a;Swin Transformer: Hierarchical Vision Transformer using Shifted Windows. 官方代码地址&#xff1a;https://github.com/microsoft/Swin-Transformer. 引言与概括 ICCV2021的最佳论文作者是来自微软亚洲研究院。 SwinTransforme…

基础实践:使用JQuery Ajax调用Servlet

前言 本博客介绍最简单的JQuery&#xff08;原生JS的封装库&#xff09;使用Ajax发送请求&#xff0c;并通过对应的servlet响应数据&#xff0c;并在页面显示&#xff0c;并且servlet响应的数据来自MySQL数据库。 实现需求&#xff1a;在前端页面的输入框中输入要注册的用户名&…

依赖库查看工具Dependencies

依赖库查看工具&#xff1a;Dependencies Dependencies 是一款 Windows 平台下的静态分析工具&#xff0c;用来分析可执行文件&#xff08;EXE、DLL 等&#xff09;所依赖的动态链接库&#xff08;DLL&#xff09;。它可以帮助开发者和系统管理员快速查找程序在运行时可能缺少的…

【机器学习】--- 决策树与随机森林

文章目录 决策树与随机森林的改进&#xff1a;全面解析与深度优化目录1. 决策树的基本原理2. 决策树的缺陷及改进方法2.1 剪枝技术2.2 树的深度控制2.3 特征选择的优化 3. 随机森林的基本原理4. 随机森林的缺陷及改进方法4.1 特征重要性改进4.2 树的集成方法优化4.3 随机森林的…

论文浅尝 | KAM-CoT: 利用知识图谱进行知识增强的多模态链式推理(AAAI2024)

笔记整理&#xff1a;沈小力&#xff0c;东南大学硕士&#xff0c;研究方向为多模态大预言模型、知识图谱 论文链接&#xff1a;https://arxiv.org/abs/2401.12863 发表会议&#xff1a;AAAI2024 1. 动机 本文探索了知识图谱在扩展大语言模型的多模态能力的效果&#xff0c;提出…

在jupyter notebook中取消代理服务器的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

使用GPU 加速 Polars:高效解决大规模数据问题

Polars 最近新开发了一个可以支持 GPU 加速计算的执行引擎。这个引擎可以对超过 100GB 的数据进行交互式操作能。本文将详细讨论 Polars 中DF的概念、GPU 加速如何与 Polars DF协同工作&#xff0c;以及使用新的 CUDA 驱动执行引擎可能带来的性能提升。 Polars 核心概念 Polar…