HarmonyOS Next快速入门:函数和自定义构建函数

##HarmonyOS Next快速入门##HarmonyOS应用开发##教育##

点击跳转《HarmonyOS Next快速入门》视频教程

函数

实例

typescript 复制代码
// 有名函数
function add(x:number, y:number) {
  return x + y;
}
console.log("add",add(1,2)); 

// 匿名函数(lambda表达式)
let myAdd = (x:number, y:number) => {
  return x + y;
};
console.log("myAdd",myAdd(1,2)); 

//typescript是如何确保输入输出的准确性
//1.入参指定数据类型
console.log("add2",add(1,'2')); 
//2.函数指定数据类型
function newAdd(x:number, y:number):number {
  return "newAdd:"+x+y;
}
console.log("newAdd",newAdd(1,2)); 

//可选参数
function buildName(firstName: string, lastName?: string):string {
    if (lastName)
        return firstName + ' ' + lastName;
    else
        return firstName;
}
let result1 = buildName('Bob');
let result2 = buildName('Bob', 'Adams');
console.log("result1",result1);
console.log("result2",result2);

//剩余参数,个数不限的可选参数。 可以一个都没有,也可以有任意个。使用省略号( ...)进行定义
function getEmployeeName(firstName: string, ...restOfName: string[]):string {
  return firstName + ' ' + restOfName.join(' ');
}
let employeeName = getEmployeeName('Joseph', 'Samuel', 'Lucas', 'MacKinzie');
console.log("employeeName",employeeName);

自定义构建函数

ArkUI提供了一种轻量的UI元素复用机制@Builder,其内部UI结构固定,仅与使用方进行数据传递,开发者可以将重复使用的UI元素抽象成一个方法,在build方法里调用。

为了简化语言,@Builder装饰的函数也称为"自定义构建函数"。

@Builder装饰器有两种使用方式,分别是定义在自定义组件内部的私有自定义构建函数和定义在全局的全局自定义构建函数。

定义在自定义组件内部的私有自定义构建函数:

typescript 复制代码
@Entry
@Component
struct BuilderDemo {
  @Builder
  showTextBuilder() {
    Text('Hello World')
      .fontSize(30)
      .fontWeight(FontWeight.Bold)
  }
  @Builder
  showTextValueBuilder(param: string) {
    Text(param)
      .fontSize(30)
      .fontWeight(FontWeight.Bold)
  }
  build() {
    Column() {
      // 无参数
      this.showTextBuilder()
      // 有参数
      this.showTextValueBuilder('Hello @Builder')
    }
  }
}

定义在全局的全局自定义构建函数

typescript 复制代码
@Builder
function showTextBuilder() {
  Text('Hello World')
    .fontSize(30)
    .fontWeight(FontWeight.Bold)
}
@Entry
@Component
struct BuilderDemo {
  build() {
    Column() {
      showTextBuilder()
    }
  }
}

参数传递规则

自定义构建函数的参数传递有按值传递和按引用传递两种,均需遵守以下规则:

  • 参数的类型必须与参数声明的类型一致,不允许undefined、null和返回undefined、null的表达式。
  • 在@Builder修饰的函数内部,不允许改变参数值。
  • @Builder内UI语法遵循UI语法规则。
  • 只有传入一个参数,且参数需要直接传入对象字面量才会按引用传递该参数,其余传递方式均为按值传递。
相关推荐
罗四强10 小时前
第7篇:常用组件:Text/Image/Button/List 实战拼页面
华为·harmonyos
OH_TPC1 天前
HarmonyOS APP开发---“动效君“UI动效素材库App,需要用到这个库
ui·华为·harmonyos·鸿蒙
贾伟康1 天前
HarmonyOS 3DGS 滤镜切换实战:效果创建、参数管理与资源释放
harmonyos·arkts·鸿蒙开发·技术实践·空间化体验
HarmonyOS_SDK1 天前
【HarmonyOS API 26】分布式数字身份DID:系统级可信身份体系
harmonyos
贾伟康1 天前
HarmonyOS GSNode 场景控制实战:位置、缩放、可见性与状态同步
harmonyos·arkts·鸿蒙开发·技术实践·空间化体验
redtank20001 天前
纯血鸿蒙本地音乐播放器开发实战:我爱听歌架构解析
harmonyos
贾伟康1 天前
HarmonyOS API 26 分块 3DGS 实战:相机驱动、瓦片回调与并发去重
性能优化·harmonyos·arkts·3dgs·spatial recon kit
万物智能信息科技1 天前
指纹识别传感器驱动开发—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
驱动开发·华为·开源·harmonyos·鸿蒙
贾伟康2 天前
【共创稿事节】HarmonyOS 7.0 AOT编译优化:从接入到生产验证
harmonyos·arkts·路由·navigation·navdestination
2601_949480062 天前
开源鸿蒙平台 CMP 三方库「shadcn」适配全流程
华为·开源·harmonyos