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装饰器有两种使用方式,分别是定义在自定义组件内部的私有自定义构建函数和定义在全局的全局自定义构建函数。

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

arkts 复制代码
@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')
    }
  }
}

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

arkts 复制代码
@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语法规则。
  • 只有传入一个参数,且参数需要直接传入对象字面量才会按引用传递该参数,其余传递方式均为按值传递。
相关推荐
lqj_本人1 小时前
Flutter 三方库「drag_and_drop_flutter」的鸿蒙化适配指南
flutter·华为·harmonyos
JoyCong19981 小时前
知识科普:ToDesk鸿蒙版高级功能免费开放使用了!
运维·服务器·华为·智能手机·harmonyos·远程工作
HwJack203 小时前
HarmonyOS单版本表模式与 schema 实战:多端共编文档的冲突解决
华为·harmonyos
HwJack206 小时前
HarmonyOS开发全文检索 FTS 小实战:中文分词与聊天记录搜索
全文检索·中文分词·harmonyos
Java的搬运工19 小时前
HarmonyOS ArkUI V2 实战:Schema 驱动表单、2in1 适配与实时通信
harmonyos·arkts·openharmony·harmonyos next·表单校验·arkui v2·2in1
花先锋队长20 小时前
HarmonyOS 7.0正式发布|华为天气空间运镜城市皮肤从4城增至10城
华为·智能手机·harmonyos
贾伟康20 小时前
【口算王|01】HarmonyOS ArkTS 口算题生成实战:按年级、运算类型和难度生成可控题目
算法·harmonyos·arkts·随机生成·口算题
HarmonyOS_SDK1 天前
基于增强QUIC协议优化弱网下的直播观看体验
harmonyos
安好说AI1 天前
Flutter 三方库 adaptive_image_picker 的鸿蒙化适配指南:零权限选图、纯 Dart 裁剪与目标大小压缩
flutter·harmonyos
2501_919749031 天前
华为鸿蒙免费PDF工具—小羊免费PDF
华为·pdf·harmonyos·鸿蒙