目录
一、ArkTS 函数初相识
在 HarmonyOS 应用开发的世界里,ArkTS 语言如同一位得力助手,帮助开发者们构建出功能丰富、体验流畅的应用程序。而在 ArkTS 语言的庞大体系中,函数无疑是其中的核心与基石,起着举足轻重的作用。
函数就像是一个个精心打造的工具,将具有相同或相似逻辑的代码 “包裹” 起来 ,实现了代码的复用,极大地提高了开发效率。比如,在开发一个购物应用时,计算商品总价、折扣金额等功能,都可以封装在不同的函数中。当需要进行这些计算时,直接调用相应的函数即可,无需重复编写代码,这不仅减少了代码量,还降低了出错的概率,让代码的维护和管理变得更加轻松。而且通过将复杂的功能分解为多个独立的函数,每个函数专注于完成一项特定的任务,使代码结构更加清晰,可读性大大增强,就像一本条理清晰的书籍,让人一目了然。
接下来,就让我们正式开启 ArkTS 函数的学习之旅,深入探索函数的定义、参数传递、返回值以及各种高级特性,掌握这一强大的编程工具,为 HarmonyOS 应用开发打下坚实的基础。
二、函数的基本结构
(一)函数声明
在 ArkTS 中,函数声明是定义函数的重要方式,它包含函数名、参数列表、返回类型和函数体这几个关键部分 。其基本语法结构如下:
function 函数名(参数1: 类型1, 参数2: 类型2): 返回类型 {
// 函数体,实现具体功能的代码
return 返回值;
}
例如,我们定义一个简单的加法函数:
function add(x: number, y: number): number {
return x + y;
}
在这个例子中,add是函数名,它就像是给这个特定功能的 “工具” 取的名字,方便我们在需要的时候调用它;(x: number, y: number)是参数列表,这里定义了两个参数x和y,它们的类型都是number,就好比是这个 “工具” 工作时需要的原料;: number表示返回类型,说明这个函数执行完毕后会返回一个number类型的值;而函数体{ return x + y; }则是实现加法功能的具体代码,它将两个参数相加并返回结果 。通过这样的函数声明,我们就创建了一个可以重复使用的加法工具,只要传入两个数字,就能得到它们的和。
(二)参数类型与规则
必选参数
必选参数是在函数调用时必须提供的参数,它们是函数执行其功能所不可或缺的部分。例如,我们定义一个计算矩形面积的函数:
function calculateRectangleArea(width: number, height: number): number {
return width * height;
}
在这个函数中,width和height就是必选参数,它们分别表示矩形的宽度和高度,类型都是number。当我们调用这个函数时,必须为这两个参数提供具体的值,如下所示:
let area = calculateRectangleArea(5, 3);
console.log(area); // 输出15
如果在调用函数时缺少必选参数,就会导致编译错误,就像机器缺少了关键零件无法正常运转一样。比如写成let area = calculateRectangleArea(5);,编译器会提示缺少参数height ,这就强调了必选参数在函数调用中的必要性和重要性。
可选参数
可选参数是在函数调用时可以省略的参数。在 ArkTS 中,可选参数的格式为属性名?: Type ,即在参数名后面加上一个问号来表示该参数是可选的。例如,我们定义一个打招呼的函数:
function sayHello(name?: string) {
if (name) {
console.log(`Hello, ${name}!`);
} else {
console.log('Hello!');
}
}
在这个函数中,name是一个可选参数,类型为string。当我们调用这个函数时,可以提供name参数,也可以省略它:
sayHello('Alice'); // 输出Hello, Alice!
sayHello(); // 输出Hello!
当省略可选参数name时,函数会执行else分支,输出通用的问候语Hello! 。这使得函数在使用上更加灵活,能够适应不同的调用场景,比如在一些情况下我们可能不知道对方的名字,就可以直接调用不带参数的函数来进行简单问候。
默认参数
默认参数是为参数设置一个默认值,当在函数调用中省略该参数时,就会使用这个默认值作为实参。例如,我们定义一个计算商品折扣价格的函数:
function calculateDiscountedPrice(originalPrice: number, discountRate: number = 0.8): number {
return originalPrice * discountRate;
}
在这个函数中,discountRate是一个默认参数,它的默认值为0.8,表示八折优惠。当我们调用这个函数时,如果不传入discountRate参数,就会使用默认的折扣率:
let price1 = calculateDiscountedPrice(100);
console.log(price1); // 输出80
let price2 = calculateDiscountedPrice(100, 0.9);
console.log(price2); // 输出90
在第一个调用中,由于省略了discountRate参数,函数使用默认值0.8来计算折扣价格,得到 80;在第二个调用中,传入了0.9作为折扣率,函数就按照传入的值计算,得到 90。默认参数为函数的调用提供了一种便捷的方式,减少了重复代码的编写,同时也提高了代码的可读性和可维护性。
rest 参数
rest 参数允许函数接受任意数量的实参,它的语法是使用三个点(...)后跟参数名,且 rest 参数必须是函数的最后一个参数。例如,我们定义一个计算多个数字总和的函数:
function sum(...numbers: number[]): number {
let result = 0;
for (let number of numbers) {
result += number;
}
return result;
}
在这个函数中,