【鸿蒙开发入门:ArkTS 基础(下篇)】

ArkTS 基础入门

本篇文章将带你快速入门 ArkTS 的基础知识,包括变量声明、数据类型、运算符、控制流语句以及空安全处理,为鸿蒙应用开发打下坚实的基础。


目录


七:函数与方法

1. 函数声明

函数声明用于定义一个函数,包含函数名称、参数列表、返回类型和函数体。

function add(x: string, y: string): string {  
    let z: string = `${x} ${y}`;  
    return z;
}
1.1 可选参数

可选参数的格式为 name?: Type,允许在调用时省略这些参数。

function greet(name?: string) {  
    if (name === undefined) {    
        console.log('Hello!');
    } else {    
        console.log(`Hello, ${name}!`);
    }
}
1.2 默认值参数

参数可以有默认值。在调用时若省略该参数,则使用默认值。

function multiply(n: number, coeff: number = 2): number {  
    return n * coeff;
}

multiply(2);  // 返回 4
multiply(2, 3); // 返回 6
1.3 Rest 参数

Rest 参数允许函数接受任意数量的参数,并将它们收集到一个数组中。Rest 参数必须位于参数列表的末尾,通常用于处理不定参数,例如计算不定数量的数字和。

  • 语法为 ...paramName: Type[]
  • Rest 参数可与其他参数一起使用,但必须放在最后。
function sum(...numbers: number[]): number {
    return numbers.reduce((acc, curr) => acc + curr, 0);
}

console.log(sum(1, 2, 3)); // 输出:6
console.log(sum()); // 输出:0
Rest 参数与其他参数结合使用

可以在函数中将 Rest 参数与其他参数搭配使用,以接受固定参数和任意数量的可变参数。

function introduce(greeting: string, ...names: string[]): void {
    for (let name of names) {
        console.log(`${greeting}, ${name}!`);
    }
}

introduce("Hello", "Alice", "Bob", "Carol"); 
// 输出:
// Hello, Alice!
// Hello, Bob!
// Hello, Carol!

在上例中,greeting 是固定参数,names 是 Rest 参数,可以接受任意数量的名字。

2. 返回类型

如果可以从函数体内推断出返回类型,则可以省略返回类型标注。无返回值的函数类型可以显式指定为 void 或省略。

function display(): void { console.log('Displaying...'); }
function getMessage() { return 'Hello'; } // 推断为 string 类型

3. 函数作用域与调用

函数中定义的变量只能在函数内部访问,外部无法访问这些变量。调用函数会执行其函数体,并将实参赋值给形参。

function join(x: string, y: string): string {  
    let z: string = `${x} ${y}`;  
    return z;
}

let message = join('hello', 'world');
console.log(message); // 输出 "hello world"

4. 函数类型

函数类型可以用于定义回调函数或作为类型标注。

type MathFunc = (x: number) => number;

function applyFunc(func: MathFunc) {   
    console.log(func(3.14));
}

applyFunc(Math.sin); // 将 Math.sin 作为参数传入

5. 箭头函数(Lambda 函数)

箭头函数可以用简洁的语法定义匿名函数。可以省略花括号和返回类型,让表达更简短。

let sum = (x: number, y: number): number => x + y;
let multiply = (x: number, y: number) => x * y; // 自动推断返回类型

6. 闭包

闭包是由函数及其声明时的环境组成的。闭包捕获并保留函数创建时作用域内的变量,使得这些变量在闭包函数中可以继续访问。

function createCounter(): () => number {  
    let count = 0;  
    return () => { count++; return count; };
}

let counter = createCounter();
console.log(counter()); // 输出 1
console.log(counter()); // 输出 2

在上例中,counter 是一个闭包,它捕获了 count 变量,并在每次调用时保留并更新其值。

7. 函数重载

函数重载允许定义多个具有相同名称但参数类型或数量不同的函数,常用于需要对不同数据类型执行相似操作的情况。ArkTS 通过重载签名声明不同的参数类型,最后在实现部分使用联合类型处理不同的情况。

重载签名

重载签名是函数定义的不同版本,仅声明参数和返回类型,不包含实现。

function format(value: string): string;
function format(value: number): string;
实现签名

在实现中,使用联合类型涵盖所有可能的参数类型,并添加逻辑来区分参数类型。

function format(value: string | number): string {
    if (typeof value === "string") {
        return `String: ${value}`;
    } else {
        return `Number: ${value}`;
    }
}

console.log(format("ArkTS&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值