当前位置: 首页 > news >正文

鸿蒙next开发第一课03.ArkTs语法介绍-案例

e075b2532fe0157e80b4f586002fb01c.jpeg

前面已经学习了ArkTs的基本语法和DevEcoStudio的基本操作,接下来按照官方提示开发一个基本案例。

该案例是系统自带的demo,下载下来源代码后可以直接运行。

接下来我来演示如何运行demo。我在demo中加入了自己的注释。

切记:文件夹不能有中文!这点华为有点不厚道。现在idea都支持全中文了。

fd6bc23c310c8b0914d1cdaab13d8b6d.jpeg

打开DS编辑器,点击Open

40ef49cc81e810de60f2d0b214a1b036.jpeg

53eb708f7d23f566ba695769c53cb298.jpeg

点击TrustProject

3422ba8f3aa135ce9fc573fb0edb4436.jpeg

点击ThisWindows

打开后,会自动显示MD的内容

使用说明

点击打印水仙花数按钮,弹窗展示1000以内的水仙花数。

点击打印九九乘法表按钮,弹窗提醒用户通过日志查看。

点击判断字符串是否为回文字符串按钮,弹窗提醒用户输入字符串,点击按钮即可弹窗告知用户是否为回文字符串。

点击字符串反转按钮,弹窗提醒用户输入字符串,点击按钮即可弹窗显示反转字符串。

点击判断是否为闰年按钮,弹窗提醒用户输入年份,点击按钮即可弹窗显示该年份是否为闰年。

├──entry/src/main/ets/
│ ├──common
│ │ ├──constants
│ │ │ └──Constants.ets // 常量类
│ │ └──utils
│ │ ├──CommonUtils.ets // 弹窗工具类
│ │ ├──Logger.ets // 日志工具类
│ │ └──Method.ets // 算法工具类
│ ├──entryability
│ │ └──EntryAbility.ets
│ ├──entrybackupability
│ │ └──EntryBackupAbility.ets.ets
│ ├──pages
│ │ └──Index.ets // 界面实现
│ └──view
│ ├──DaffodilsNumberCustomDialog.ets // 水仙花数弹窗实现
│ ├──IsLeapYearCustomDialog.ets // 闰年判断数弹窗实现
│ ├──IsPalindromicStringCustomDialog.ets // 回文字符串判断数弹窗实现
│ ├──MultiplicationTableCustomDialog.ets // 九九乘法表弹窗实现
│ └──StringReversalCustomDialog.ets // 字符串反转弹窗实现
└───entry/src/main/resources // 应用资源目录

 应用资源目录

华为将第一个项目整得太复杂了,如果是新手的话,看到这个项目基本上就是:我是谁,我在哪?

这里面用到了非常多的封装,例如common的封装,字符串封装,单位常量的封装,包括MVVC的分层结构,作为小白来说,这纯纯的zhuangB啊。

e64f422bf74b61d508168fe3be609cb3.jpeg

本地化

95b1c16df8c705a6589812bd664619be.jpeg

其实主要的核心方法都是一个ets文件里面,做了封装。

/** Copyright (c) 2024 Huawei Device Co., Ltd.* Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**     http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
// 水仙花数字
export function daffodilsNumber(): number[] {let result: number[] = [];for (let i = 100; i < 1000; i++) {let unitsDigit: number = i % 10;let tenthsDigit: number = Math.floor(i / 10) - Math.floor(i / 100) * 10;let hundredthsDigit: number = Math.floor(i / 100);if (i === unitsDigit * unitsDigit * unitsDigit + tenthsDigit * tenthsDigit * tenthsDigit +hundredthsDigit * hundredthsDigit * hundredthsDigit) {result.push(i);}}return result;
}// 乘法口诀表
export function multiplicationTable(): string[][] {let result: string[][] = [];for (let i = 1; i <= 9; i++) {let index: string[] = [];for (let j = 1; j <= i; j++) {let temp: string = j + ' * ' + i + ' = ' + i * j;index.push(temp);}result.push(index);}return result;
}
// 是否回文
export function isPalindromicString(content: string): boolean {let result: boolean = true;let i: number = 0;let j: number = content.length - 1;while (i <= j) {if (content.charAt(i) !== content.charAt(j)) {result = false;break;}i++;j--;}return result;
}
//字符串反转
export function stringReversal(content: string): string {let result: string = '';for (let index = content.length - 1; index >= 0; index--) {result += content.charAt(index);}return result;
}
// 是否闰年
export function isLeapYear(year: number): boolean {let result: boolean = false;if ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) {result = true;} else {result = false;}return result;
}

华为不地道,真的不地道,所有的代码完全没有一点中文,这上面的出现的中文注释都是我加进去的。

65f636b133e7a2b4b1f512d4f02bf39d.jpeg

4a972e145e460c8b63b4bef0b871e429.jpeg

下面来看看闰年是如何写的代码

15967635bb94dbca5b5842b37a78b749.jpeg

e9ba6394ab93bf49e1700aedd220333f.jpeg

8d465469219395b7814dae052208770a.jpeg

08e2564935cb855ce0f88472415f72eb.jpeg

/** Copyright (c) 2024 Huawei Device Co., Ltd.* Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**     http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
// 常量类
import { CommonConstants } from '../common/constants/Constants';
// 工具类,里面包含了一个showToast方法
import CommonUtils from '../common/utils/CommonUtils';
// 引入判断闰年的方法
import { isLeapYear } from '../common/utils/Method';@CustomDialog
@Component
export struct IsLeapYearCustomDialog {@State content: string = '';@State result: boolean = false;IsPalindromicStringCustomDialogController?: CustomDialogController;build() { // 构造器Column() { // 布局器Column() { // 列布局// 铺界面 文本Text($r('app.string.ArkTS_Development_Case')).height($r('app.float.button_height')).font({ size: $r('sys.float.ohos_id_text_size_headline8') }).fontColor($r('sys.color.ohos_id_color_text_primary')).margin({ top: $r('app.float.dialog_text_margin_top') })Text($r('app.string.Judgment_of_leap_year')).font({ size: $r('sys.float.ohos_id_text_size_body2') }).fontColor($r('sys.color.ohos_id_color_text_secondary')).margin({ left: $r('app.float.dialog_text_margin_left') })}.alignItems(HorizontalAlign.Center).width(CommonConstants.PERCENT_FULL).height($r('app.float.dialog_text_height'))// 可编辑文本框TextInput({ placeholder: CommonConstants.LEAP_YEAR_INPUT }).margin({ top: $r('app.float.dialog_padding') }).height($r('app.float.dialog_textInput_height')).showUnderline(true).onChange((value: string) => {this.content = value;})// 点击按钮,判断是否闰年Button($r('app.string.IsLeapYear')).width($r('app.float.dialog_button_width')).margin({top: $r('app.float.button_margin_bottom'),bottom: $r('app.float.dialog_padding')}).onClick(() => {// 这里开始正式调用判断闰年的方法this.result = isLeapYear(Number.parseInt(this.content));if (this.result) {// 是否闰年,使用showToast显示CommonUtils.showToast(CommonConstants.LEAP_YEAR_YES);} else {CommonUtils.showToast(CommonConstants.LEAP_YEAR_NO);}})}.alignItems(HorizontalAlign.Center).padding({left: $r('app.float.dialog_padding'),right: $r('app.float.dialog_padding')})}
}

还是一样,中文注释都是我加进去的。里面没有出现任何一个中文字符。

381955353f1ecf8e5b4c2dcc2a1cf49b.jpeg

89b490b1782508ea7a0c75f9bdfbf08a.jpeg

c4248d6e45d8ce8f47250c478b08d2cf.jpeg

总结:

华为鸿蒙next开发可能太希望能做标准化了,作为新手入门的第一个项目,基本上所有的代码都封装了,非常标准,分层,本地化都做到了,但是这能入门吗?

如果作为一个老鸟,以后的项目参考这个项目来写,还是非常有帮助的,如需下载项目,请直接去官网。

需要我的这份也可以,留下email即可发送。

相关文章:

鸿蒙next开发第一课03.ArkTs语法介绍-案例

前面已经学习了ArkTs的基本语法和DevEcoStudio的基本操作&#xff0c;接下来按照官方提示开发一个基本案例。 该案例是系统自带的demo&#xff0c;下载下来源代码后可以直接运行。 接下来我来演示如何运行demo。我在demo中加入了自己的注释。 切记&#xff1a;文件夹不能有中…...

HTML网页制作——设计系学生静态HTML网页设计作品

HTML网页制作——设计系学生静态HTML网页设计作品 网站主题为荷兰风格派&#xff0c;主要介绍荷兰风格设计的网站&#xff0c;由设计系学生亲自设计&#xff0c;独立开发网页&#xff0c;适用于学生自己的作品。 网站效果视频&#xff1a; 荷兰风格派&#xff08;设计系学生网…...

智能翻译新纪元:4款英汉互译在线工具解析

大家好&#xff0c;我是一个喜欢找各种办公软件的人&#xff0c;今天咱们来聊聊那些让我们在英汉互译世界里如鱼得水的神器——福昕翻译在线、福昕翻译大师、海鲸AI论文翻译&#xff0c;还有DeepL翻译。这些家伙&#xff0c;简直就是我们跨语言交流的超级英雄&#xff01; 1、…...

Cisco Meraki平台中国区注册

登陆下面网址注册cisco meraki中国区云平台账户 https://n4.meraki.cn/ 点击创建一个新账户 地区选择“china” 填写邮箱&#xff0c;名字&#xff0c;秘密&#xff0c;公司名称等信息&#xff0c;点击注册新账户 注册的邮箱会收到一封确认此邮箱的邮件&#xff0c;点击…...

分享国产RISC-V单片机通用

开源已经成为构建新技术生态的主流趋势。基于开源指令集 RISC-V 的软硬件生态正在飞速扩增&#xff0c;并且已经迅速扩展至个人 PC、服务器和人工智能等领域。RISC-V 的灵活性和可扩展性使其能够在应用处理器和AI加速领域迅速发展。 RAMSUN提供的RISC-V单片机&#xff0c;开源…...

java 网络知识 + 多线程问题

服务器&#xff1a; package p1007;import java.io.*; import java.net.*; import java.util.Random;public class Server {public static void main(String[] args) {int port 12345; // 服务端口try (ServerSocket serverSocket new ServerSocket(port)) {System.out.print…...

android 菜单不显示auto time zone菜单

packages\apps\Settings\res\xml\date_time_prefs.xml 有对应的xml packages\apps\Settings\src\com\android\settings\datetime\AutoTimeZonePreferenceController.java Overridepublic boolean isAvailable() {if (mIsFromSUW) {return false;}TimeZoneCapabilities time…...

51单片机的金属探测器【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块金属检测传感器继电器LED、蜂鸣器等模块构成。适用于金属探测仪、检测金属、剔除金属等相似项目。 可实现功能: 1、LCD1602实时显示是否检测到金属 2、金属检测传感器&#xff08;按键模拟&#xff09;检测是否有…...

使用Spring Security实现用户-权限-资源的精细化控制

文章目录 一、基于权限的请求控制二、加载用户权限信息三、自定义异常处理四、注册自定义异常处理器五、总结 在开发Web应用时&#xff0c;权限管理是一个不可忽视的部分。最近在项目中&#xff0c;我使用了Spring Security来实现用户、权限、资源之间的精细化控制。这里我想分…...

动态规划10:174. 地下城游戏

动态规划解题步骤&#xff1a; 1.确定状态表示&#xff1a;dp[i]是什么 2.确定状态转移方程&#xff1a;dp[i]等于什么 3.初始化&#xff1a;确保状态转移方程不越界 4.确定填表顺序&#xff1a;根据状态转移方程即可确定填表顺序 5.确定返回值 题目链接&#xff1a;174.…...

【数据结构】链表-1

数组 数组在分配内存的时候需要先告诉系统它有多大&#xff0c;为什么呢&#xff1f;打个比方&#xff0c;我们有以一列的凳子&#xff0c;按顺序排布&#xff0c;一个位置只放一个&#xff0c;数组呢&#xff0c;是一个家庭&#xff0c;数组这个家庭呢&#xff0c;他们得挨着…...

Python进阶--正则表达式

目录 1. 基础匹配 2. 元字符匹配 1. 基础匹配 正则表达式&#xff0c;又称规则表达式&#xff08;Regular Expression&#xff09;&#xff0c;是使用单个字符串来描述、匹配某个句法规则的字符串&#xff0c;常被用来检索、替换那些符合某个模式&#xff08;规则&#xff…...

富格林:发现潜在欺诈安全交易

富格林指出&#xff0c;在全球经济不确定性加剧的背景下&#xff0c;黄金的避险优势再次吸引了投资者的关注。尤其是在今年&#xff0c;随着多种因素的变化&#xff0c;金价的走势引发了市场的广泛讨论。但事实上黄金与其他投资品类相似&#xff0c;也存在潜在的欺诈套路导致我…...

Linux复习--Linux服务管理类(SSH服务、DHCP+FTP、DNS服务、Apache服务、Nginx服务、HTTP状态码)

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、SSH服务 1、问题引出 哪些设置能够提升SSH远程管理的安全等级&#xff1f; 2、SSH的登录验证方式-口令登录 3、SSH的登录验证方式-密钥登录 4、…...

如何用大模型来提升学习效率?

自从2022年底ChatGPT横空出世以来&#xff0c;在过去的十几个月里&#xff0c;生成式人工智能的浪潮席卷并改变着各行各业。 2023年一月&#xff0c;在线课程供应商Study.com曾向1000名18岁以上的学生发起的一项调查显示&#xff0c;当时就已经有超过89%的学生使用ChatGPT来完…...

SQL进阶技巧:如何优雅求解指标累计去重问题?

目录 0 需求概述 1 数据准备 2 问题分析 3 小结 0 需求概述 近期公司开发某项学习功能,改功能有很多学习内容(如java,C,python等方向),每天都会有众多学习用户学习某一项或者多项学习内容。产生数据如下表: 产生数据如下表: 日期 内容 学习用户 2022…...

大数据毕业设计选题推荐-国产电影数据分析-Python数据可视化-Hive-Hadoop-Spark

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

Linux:无法为立即文档创建临时文件: 设备上没有空间

虚拟机磁盘空间不足解决记录 1、问题描述2、问题解决 1、问题描述 在命令行输入命令按Tab键时出现如下报错&#xff1a; 很明显&#xff0c;设备上没有空间&#xff0c;即磁盘空间不足。通过命令查看具体情况如下&#xff1a; df -h2、问题解决 首先想到的是虚拟机扩容。关机虚…...

【SQL】掌握SQL查询技巧:数据筛选与限制

目录 1. DISTINCT&#xff1a;避免重复记录1.1 示意图1.2 使用场景 2. LIMIT&#xff1a;控制查询结果的数量2.1 示意图2.2 使用场景 3. OFFSET&#xff1a;跳过前几行3.1 示意图3.2 使用场景 4. WHERE子句&#xff1a;精细控制数据过滤4.1 示意图4.2 运算符详细说明4.3 基本条…...

大学生社团活动系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;社长管理&#xff0c;社团分类管理&#xff0c;社团信息管理&#xff0c;社团加入管理&#xff0c;社团活动管理&#xff0c;轮播图信息 微信端账号功能包括&#xff1a;系统首页…...

C++:std::is_convertible

C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...

网站指纹识别

网站指纹识别 网站的最基本组成&#xff1a;服务器&#xff08;操作系统&#xff09;、中间件&#xff08;web容器&#xff09;、脚本语言、数据厍 为什么要了解这些&#xff1f;举个例子&#xff1a;发现了一个文件读取漏洞&#xff0c;我们需要读/etc/passwd&#xff0c;如…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...

莫兰迪高级灰总结计划简约商务通用PPT模版

莫兰迪高级灰总结计划简约商务通用PPT模版&#xff0c;莫兰迪调色板清新简约工作汇报PPT模版&#xff0c;莫兰迪时尚风极简设计PPT模版&#xff0c;大学生毕业论文答辩PPT模版&#xff0c;莫兰迪配色总结计划简约商务通用PPT模版&#xff0c;莫兰迪商务汇报PPT模版&#xff0c;…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域&#xff0c;REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名&#xff0c;不断适应这些现代范式的需求。随着不断发展的生态系统&#xff0c;Java 在现代 API 方…...

Vue ③-生命周期 || 脚手架

生命周期 思考&#xff1a;什么时候可以发送初始化渲染请求&#xff1f;&#xff08;越早越好&#xff09; 什么时候可以开始操作dom&#xff1f;&#xff08;至少dom得渲染出来&#xff09; Vue生命周期&#xff1a; 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

ubuntu22.04有线网络无法连接,图标也没了

今天突然无法有线网络无法连接任何设备&#xff0c;并且图标都没了 错误案例 往上一顿搜索&#xff0c;试了很多博客都不行&#xff0c;比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动&#xff0c;重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...