有ArkTS函数基础,很重要!

ArkTS中函数的声明与调用


目录

ArkTS中函数的声明与调用

函数的基础

1.定义和作用:

2.函数声明:

3.示例:

注意点:

函数的参数形式

1.定义和作用

2.区分:

3.示例:

可选参数形式(扩展)

参数形式——赋默认值(扩展)

函数的返回值

使用步骤:

示例:

注意点:

箭头函数

1.不带参数

2.带参数的箭头函数

3.有参数有返回值的写法

函数声明方式和调用方法总结

声明方式:

调用函数:

小结:


函数的基础

1.定义和作用

定义:函数可以把具有相同或相似逻辑的代码“包裹”起来,有利于代码复用。

作用:函数 可以被重复使用的 代码块

2.函数声明

函数声明通常包括函数名、参数列表、返回类型和函数体。

//函数声明
fnnction 函数名() {
  函数体
}

函数名()  //调用函数

3.示例:

//声明函数
function sum() {
  let res: number = 10 + 20
  console.log('相加的结果是:', res)
}

sum() //调用函数 输出结果

注意点:

  1. 函数定义的时候,{ }里面的方法体 不会被执行
  2. 函数被调用时,方法体才会被执行
  3. function 定义的方法 是会被提到最前面执行

函数的参数形式

1.定义和作用

定义:数的参数形式指的是函数在定义和调用时传递参数的不同方式。

作用:函数能够接收和处理外部的数据,提高函数的灵活性和通用性。

  • 1.定义函数(形参)

    • function 函数名 ( 形参1:类型 ,形参2:类型,,, ) { }

  • 2.调用函数(实参)

    • 函数名 ( 实参1 ,实参2,,, )

2.区分:

形参:形式上的参数(函数定义时候写的参数)

实参:真实数据(函数调用时候的传入的真实数据)

3.示例:

// 定义带有参数的函数
function sum(num1: number, num2: number) {
  let res: number = num1 + num2
  console.log("相加的结果是:", res)
}

// 调用函数
sum(20, 30) //相加的结果是:50
sum(15,25) //相加的结果是:40

可选参数形式(扩展)

函数在定义的时候,设置了形参入口,但是在调用的时候并不是任何时候都需要传入实参数据,为了避免报错,我们可以将形参设置为可选参数, 或者给形参设置一个默认值

//语法: 形参名?:类型
function sayHi(msg?: string) {
  console.log('打招呼:', msg)
}

sayHi('Hello') //传了实参
sayHi()   //没有传实参(如果形参不设置可选,就会出现报错)

参数形式——赋默认值(扩展)

在一些情况下,形参的数值不能为 undefined, 否则容易引起程序的崩溃,否则其计算的结果不能使用到业务逻辑当中. 这时候就需要使用到默认值的形式了

function sum(x: number = 0, y: number = 0) {
  let res: number = x + y
  return res
}

console.log('结果是', sum()) //没有实参,则默认传入 0 0  结果是:0
console.log('结果是', sum(1, 2)) //结果是:3

函数的返回值

默认情况下,函数外部无法直接使用函数内部执行结果。

如果想要在函数外部使用内部执行结果,需要将这个结果设置为函数的返回值。

使用步骤:

  • 1. 在函数方法体内部 通过 return 将结果返回

  • 2. 在调用这个函数的时候:使用一个变量来接收它的返回结果

返回值作用:将函数的执行结果传递给其他部分使用(函数外部)。

示例:

// 函数的返回值
function sum(num1: number, num2: number) {
  let res: number = num1 + num2
  // 返回res的结果(才在外部使用)
  return res
}

//调用的时候,先存储返回值,再使用返回值
let resNum: number = sum(100, 200)
console.log("res的值为:", resNum)

注意点:

  • 返回值 return 一般写在函数体的最下面

  • 函数内一旦写了 return ,那么 return 后面的代码不再执行

  • 调用的时候,先存储返回值,再使用返回值

箭头函数

箭头函数是 比普通函数 更简洁 的一种函数写法

  • 场景:

    • 在ArkUI阶段,给一个元素注册事件的时候,都是使用箭头函数

1.不带参数

  • 语法:

    • let 函数名 = ()=> { }

let preName=() =>{
  console.log("李白")
}
preName()

2.带参数的箭头函数

  • 语法:

    • let 函数名 = (参数:类型)=> { 方法体 }

let preName2=(name:string)=>{
  console.log(name)
}
preName2("杜甫")

3.有参数有返回值的写法

  • 语法:

    • let 函数名 = (参数:类型)=> { 方法体 return }

let preName3=(name:string)=>{
  return name
}

let resName:string =preName3("苏轼") // 接收返回值

console.log(resName) // 打印结果

函数声明方式和调用方法总结

声明方式:

  • 1.不带参数

    • 场景:方法体的代码 完全固定,没有变化

    • 形式:function 函数名 ( ) { 方法体 }

  • 2.带参数

    • 场景:方法体的执行逻辑是可变化的,从外部传进来的,运算是固定的

    • 形式:function 函数名 ( 形参 : 类型,,, ) { 方法体 }

  • 3.带返回值

    • 场景:当一个函数体之后,需要将这个返回值 给函数外部使用

    • 形式:

      • function 函数名 ( ) { 方法体 return 结果 }

      • function 函数名 ( 形参 : 类型,,, ) { 方法体 return 结果 }

  • 4.综合的写法

    • 场景:既有形参又有返回值的这种写法

    • 形式:function 函数名 ( 形参 : 类型,,, ) { 方法体 return 结果 }

调用函数:

  • 函数名 ( )      //基础调用函数

  • 函数名 ( 实参 )     //函数一定要有形参来接收

  • 函数一旦调用,就可以获取函数内部的执行结果,如果没有 return关键字 则返回一个具体的数据

  • 如果为空,则默认返回的是 undefined

小结:

函数是一种封装代码块,可以通过声明(无参数、有参数、有返回值、综合写法)来定义,并通过调用(基础调用或传递实参)来执行,执行结果可通过return返回或默认返回undefined。


你的点赞就是我持续更新最大的动力!

#HarmonyOS #鸿蒙开发

<think>好的,用户想了解ArkTS中泛型函数的定义。首先,我需要确认ArkTS是什么。ArkTS是华为为鸿蒙应用开发设计的语言,基于TypeScript,所以它的语法应该和TypeScript类似,但可能有自己的扩展或调整。 接下来,泛型函数在TypeScript中的定义方式是使用尖括号<T>来声明类型参数,然后在函数参数或返回类型中使用。例如:function identity<T>(arg: T): T { return arg; }。但ArkTS可能有不同的语法或规范,需要查证。 需要检查是否有官方文档或可靠资源说明ArkTS的泛型支持。根据之前的知识,ArkTS确实支持TypeScript的泛型特性,但可能在语法上更严格,比如类型声明的位置或方式。 然后,用户需要具体的示例,所以需要构造一个ArkTS中泛型函数的例子。比如一个简单的identity函数,或者处理数组的泛型函数。同时要注意,ArkTS可能对类型约束有特定的要求,比如必须显式注解类型参数,或者在函数调用时必须指定类型。 另外,要注意ArkTS的泛型函数是否支持默认类型、泛型约束等高级特性。这些内容如果用户没有提到,可能需要简要提及,但主要回答应集中在基本定义和使用上。 还需要考虑用户可能的实际应用场景,比如在UI组件中使用泛型处理不同数据类型,或者在工具函数中增加复用性。因此,示例应贴近实际开发,帮助用户理解如何应用泛型解决实际问题。 最后,确保回答结构清晰,分步骤说明,符合用户的要求。同时,避免使用Markdown格式,保持自然的口语化表达,但不需要使用生硬的话术。</think>在ArkTS中,泛型函数的定义与TypeScript类似,但需注意鸿蒙开发框架的特定语法约束。以下是分步说明: 1. 基础定义语法 泛型函数通过<T>声明类型参数,可作用于参数和返回值: ```typescript function 函数名<T>(参数: T): T { // 函数体 } ``` 示例: ```typescript function identity<T>(value: T): T { return value } const num = identity<number>(42) // 显式指定类型 const str = identity("Harmony") // 自动类型推断 ``` 2. 多类型参数支持 可定义多个泛型类型: ```typescript function swap<T, U>(tuple: [T, U]): [U, T] { return [tuple[1], tuple[0]] } const result = swap([true, 3.14]) // 返回类型推断为[number, boolean] ``` 3. 类型约束(重要特性) 通过extends关键字限制泛型范围: ```typescript interface Lengthwise { length: number } function getLength<T extends Lengthwise>(obj: T): number { return obj.length } getLength("ArkTS") // 有效,string有length属性 getLength({length: 5}) // 有效 // getLength(42) 会报错,number没有length ``` 4. 泛型默认值 可为泛型参数设置默认类型: ```typescript function createArray<T = string>(length: number): T[] { return new Array(length) } const strArr = createArray(3) // 默认为string[] const numArr = createArray<number>(3) ``` 5. 实际应用场景 常见于数据处理场景: ```typescript // 泛型响应处理 function parseResponse<T>(response: string): T { return JSON.parse(response) as T } interface User { name: string age: number } const user = parseResponse<User>('{"name":"Alice","age":30}') ``` 注意事项: - 泛型擦除:运行时类型信息会被擦除 - 类型推断:优先让编译器自动推断类型 - 组件开发:泛型广泛用于自定义组件开发 - 性能优化:合理使用可提升代码复用性 建议通过实际项目练习泛型函数的使用,特别是在处理集合数据、API响应解析等场景中体会其优势。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值