仓颉编程语言(Cangjie)是华为编译器与编程语言实验室仓颉语言团队推出的一款面向全场景应用开发的编程语言,基本上就是为了辅助HarmonyOS而出现的。
没有优劣,只有适合
-
Java:由于出道早、跨平台、纯面向对象、具有JVM、生态成熟等特性,已成为编程语言领域的标杆之一,主要用于
三高(高并发、高可用和高性能)
企业级应用的开发。 -
Python:由于简单、灵活,且第三方算法库众多,已成为网络爬虫、数据科学、人工智能领域的主要编程语言(没有
之一
)。 -
Go:天生就没有所谓
线程
,而只有协程
的概念,它主要用来解决网络服务和云计算环境下复杂的系统通讯问题,非常适合于开发云计算、区块链等应用中的原生网络组件。 -
Scala:运行于JVM之上,在大数据应用领域中处于顶流的Spark(全部源码)和Flink(部分源码)就是用它开发的,所以用它来进行大数据统计分析是再合适不过的。
-
ArkTS:它是HarmonyOS首推的应用开发语言,是Ark(华为方舟编译器)和TypeScript的结合体。
-
Drools、Groovy和Aviator:作为规则引擎,其量级从
重
到轻
。Drools是用Java开发出来的规则系统,而后两者则是基于JVM的脚本语言。
装饰器(Decorator)
其实是一种特殊的函数,这个函数仅在代码加载阶段执行一次,可以被应用于类、属性、方法和参数上,从而改变原有的功能。
TypeScript或ArkTS的装饰器
,其实就对应于Java中的注解(Annotation)
。
泛型类和接口
将类和接口定义为泛型,类的成员变量和方法可以适应不同的类型,接口也可以适用于不同类型。
// 声明泛型类
class CustomStack<T> {
value: T | undefined;
setValue(val: T): void {
this.value = val;
}
getValue(): T | undefined {
return this.value;
}
}
let s = new CustomStack<string>();
s.setValue("hello");
// 输出"hello"
console.log(s.getValue());
interface GenericInterface<T> {
doSomething(value: T): void;
}
// 使用时指定类型
class ImplementingClass implements GenericInterface<string> {
doSomething(value: string): void {
console.log(value);
}
}
let is = new ImplementingClass();
// 输出"lixingyun"
is.doSomething("lixingyun");
声明函数
函数(function)
(也称为方法
)在ArkTS也中是一等公民
。
函数
通过function
关键字引入,包含名称、参数列表、返回类型和函数体。
function add(x: string, y: string): string {
let z: string = `${x} - ${y}`;
return z;
}
// 输出"hello - lixingyun"
console.log(add("hello", "lixingyun"));
// 函数的参数和返回值可以是多选的
// 参数既可以是数字,又可以字符串,返回值也一样
function foo(x: number | string): string | number {
return "2";
}
console.log(foo("1"));
类
ArkTS继承自TypeScript,所以也有类
和接口
的概念。
类的声明
class Person {
// 成员变量在声明时,或者在构造函数中尽量显式初始化
name: string = "";
age: number = 1;
// 构造函数
constructor (x: string, y: number) {
this.name = x;
this.age = y;
}
// 成员方法
show(): string {
return this.name + " " + this.age;
}
}
// 通过new关键字创建类
let p = new Person("lixingyun", 21);
// 输出"lixingyun 21"
console.log(p.show());
// 通过字面量创建类
class Point {
x: number = 0;
y: number = 0;
}
let pt: Point = { x: 42, y: 42 };
// 输出{"x": 42, "y": 42}
console.log(pt);
条件分支
和大多数语言一样,ArkTS也有两种条件语句:if
和switch
。
// 当s1为非空字符串时为true,而空字符串则为false
let s1 = "";
// 对boolean以外的类型进行判断时,会进行隐式类型转换
// 输出2
if (s1) {
console.log(1);
} else if (true) {
console.log(2);
} else {
console.log(3);
}
// 输出2
switch ("c") {
case "a":
console.log(1);
// break可选
break;
case "b":
case "c":
console.log(2);
break;
// 默认语句,可省略
default:
console.log(3);
}
ArkTS是HarmonyOS首推的应用开发语言,是Ark(华为方舟编译器)和TypeScript的结合体。