开源 Arkts 鸿蒙应用 开发(三)Arkts语言的介绍
文章的目的为了记录使用Arkts 进行Harmony app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。
相关链接:
开源 Arkts 鸿蒙应用 开发(一)工程文件分析-CSDN博客
开源 Arkts 鸿蒙应用 开发(二)封装库.har制作和应用-CSDN博客
开源 Arkts 鸿蒙应用 开发(三)Arkts的介绍-CSDN博客
开源 Arkts 鸿蒙应用 开发(四)布局和常用控件-CSDN博客
推荐链接:
开源 java android app 开发(一)开发环境的搭建-CSDN博客
开源 java android app 开发(二)工程文件结构-CSDN博客
开源 java android app 开发(三)GUI界面布局和常用组件-CSDN博客
开源 java android app 开发(四)GUI界面重要组件-CSDN博客
开源 java android app 开发(五)文件和数据库存储-CSDN博客
开源 java android app 开发(六)多媒体使用-CSDN博客
开源 java android app 开发(七)通讯之Tcp和Http-CSDN博客
开源 java android app 开发(八)通讯之Mqtt和Ble-CSDN博客
开源 java android app 开发(九)后台之线程和服务-CSDN博客
开源 java android app 开发(十)广播机制-CSDN博客
开源 java android app 开发(十一)调试、发布-CSDN博客
开源 java android app 开发(十二)封库.aar-CSDN博客
推荐链接:
开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-CSDN博客
开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-CSDN博客
开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-CSDN博客
开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-CSDN博客
开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-CSDN博客
本章节主要讲述鸿蒙开发中Arkts语言的介绍,这里主要讲一些特别和常用的语法和应用,旨在快速开发,详细的还是需要查看,官网文档中心
内容如下:
1. 声明,变量和常量以及各种不同类型的数据的声明。
2. 结构,主要的结构基本和其他语言相通
3. .har的工程应用
一、声明,变量和常量以及各种不同类型的数据的声明
1.1 变量和常量
let hi: string = 'hello';
hi = 'hello, world';const hello: string = 'hello';
1.2 number
number类型,和许多语言不同,任何整数和浮点数都可以被赋给此类型的变量。
数字字面量包括整数字面量和十进制浮点数字面量。
数字字面量包括整数字面量和十进制浮点数字面量。
整数字面量包括以下类别:
let n1 = 3.14;
let n2 = 3.141592;
let n3 = .5;
let n4 = 1e2;function factorial(n: number): number {if (n <= 1) {return 1;}return n * factorial(n - 1);
}factorial(n1) // 7.660344000000002
factorial(n2) // 7.680640444893748
factorial(n3) // 1
factorial(n4) // 9.33262154439441e+157
1.3 string
字符串字面量由单引号(')或双引号(")之间括起来的零个或多个字符组成。字符串字面量还有一特殊形式,是用反向单引号(`)括起来的模板字面量。
let s1 = 'Hello, world!\n';
let s2 = "this is a string";
let a = 'Success';
let s3 = `The result is ${a}`;
1.4 Object
Object类型是所有引用类型的基类型。任何值,包括基本类型的值,都可以直接被赋给Object类型的变量(基本类型值会被自动装箱)
let o1: Object = 'Alice';
let o2: Object = ['a','b'];
let o3: Object = 1;
1.5 Array
array类型,即数组,是由可赋值给数组声明中指定的元素类型的数据组成的对象
let names: string[] = ['Alice', 'Bob', 'Carol'];
二、结构
主要的结构和其他语言基本相通,比如if,switch,for,while等,不同的有For of,函数等。
2.1 For of
使用for-of语句可遍历数组、Set、Map、字符串等可迭代的类型
for (forVar of IterableExpression) {// process forVar
}
2.2 函数
function add(x: string, y: string): string {let z: string = `${x} ${y}`;return z;
}
2.3 函数重载
function foo(x: number): void; /* 第一个函数定义 */
function foo(x: string): void; /* 第二个函数定义 */
function foo(x: number | string): void { /* 函数实现 */
}foo(123); // OK,使用第一个定义
foo('aa'); // OK,使用第二个定义
三、类的使用
3.1 类的定义和使用
class Person {name: string = '';surname: string = '';constructor (n: string, sn: string) {this.name = n;this.surname = sn;}fullName(): string {return this.name + ' ' + this.surname;}
}let p = new Person('John', 'Smith');
console.log(p.fullName());
构造函数
constructor ([parameters]) {// ...
}
如果未定义构造函数,则会自动创建具有空参数列表的默认构造函数
class Point {x: number = 0;y: number = 0;
}
let p = new Point();
3.2 类的继承
class Person {name: string = '';private _age = 0;get age(): number {return this._age;}
}
class Employee extends Person {salary: number = 0;calculateTaxes(): number {return this.salary * 0.42;}
}
父类的访问
关键字super可用于访问父类的实例字段、实例方法和构造函数。在实现子类功能时,可以通过该关键字从父类中获取所需接口:
class RectangleSize {protected height: number = 0;protected width: number = 0;constructor (h: number, w: number) {this.height = h;this.width = w;}draw() {/* 绘制边界 */}
}
class FilledRectangle extends RectangleSize {color = ''constructor (h: number, w: number, c: string) {super(h, w); // 父类构造函数的调用this.color = c;}draw() {super.draw(); // 父类方法的调用// super.height -可在此处使用/* 填充矩形 */}
}
3.3 接口
接口声明引入新类型。接口是定义代码协定的常见方式。
任何一个类的实例只要实现了特定接口,就可以通过该接口实现多态。
接口通常包含属性和方法的声明
// 接口:
interface AreaSize {calculateAreaSize(): number; // 方法的声明someMethod(): void; // 方法的声明
}// 实现:
class RectangleSize implements AreaSize {private width: number = 0;private height: number = 0;someMethod(): void {console.log('someMethod called');}calculateAreaSize(): number {this.someMethod(); // 调用另一个方法并返回结果return this.width * this.height;}
}