Dart6.function

本文深入解析Dart语言中的函数定义与使用,涵盖普通函数、箭头函数、可选命名及位置参数、匿名函数、闭包及函数别名等内容,帮助读者全面掌握Dart函数特性。

function.dart

main() {//返回值类型可以省略
  //普通函数定义
  int add(int x, int y) {
    return x + y;
  }

  print(add(1, 2));  //输出 3

  //所有的函数都返回一个值。如果没有指定返回值,则 默认把语句 return null; 作为函数的最后一个语句执行。
  testFunc() {};
  print(testFunc());  //输出 null

  //可省略类型(不建议)
  add1(x, y) {
    return x + y;
  }

  print(add1('1', '2'));  //输出 12
  print(add1(1, 2));  //输出 3

  //箭头函数:=>表达式
  int add2(int x, int y) => x + y;

  //可选命名参数:使用 {param1, param2, …} 的形式来指定命名参数
  int add3({int x, int y, int z}) {
    x ??= 1;
    y ??= 2;
    z ??= 3;
    return x + y + z;
  }

  print(add3());  //输出 6

  //可选位置参数:把可选参数放到 [] 中,必填参数要放在可选参数前面
  int add4(int x, [int y, int z]) {
    y ??= 2;
    z ??= 3;
    return x + y + z;
  }

  print(add4(1));  //输出 6

  //可选命名参数默认值(默认值必须是编译时常量),目前可以使用等号'='或冒号':'
  //Dart SDK 1.21 之前只能用冒号,冒号的支持以后会移除,所以建议使用等号
  int add5(int x, {int y = 2, int z = 3}) {
    return x + y + z;
  }

  //前面的必填参数没有名字
  print(add5(1, y: 10, z: 2));  //输出 13

  //可选位置参数默认值(默认值必须是编译时常量),只能使用等号'='
  int add6(int x, [int y = 2, int z = 3]) {
    return x + y + z;
  }

  print(add6(1));  //输出 6

  //使用list或map作为默认值,但必须是const
  void func(
      {List list = const [1, 2, 3],
        Map map = const {1: 1, 'name': 'dongnao'}}) {
    //TODO ...
  }

  //匿名函数
  //赋值给变量
  //无参匿名函数
  var anonFunc1 = () => print('无参匿名函数');
  anonFunc1();  //输出:无参匿名函数

  //有参匿名函数
  var anonFunc = (name) => 'I am $name';
  print(anonFunc('damon'));  //输出 I am damon

  //通过()调用,不推荐
//  (()=>print('不推荐'))();

  //匿名函数传参
  List test(List list, String func(str)) {
    for (var i = 0; i < list.length; i++) {
      list[i] = func(list[i]);
    }
    return list;
  }

  var list = ['d', 'a', 'm', 'o', 'n'];
  print(test(list, (str) => str * 2)); //String * int, Dart和Python可以这样用
  //输出 [dd, aa, mm, oo, nn]

  //List.forEach()就用的匿名函数
  List list1 = [11, 12, 13];
  list1.forEach((item) => print('$item'));
  /**输出11
   * 12
   * 13
   */

  //返回Function对象(闭包)
  Function makeAddFunc(int x) {
    x++;
    return (int y) => x + y;
  }

  var addFunc = makeAddFunc(2);
  print(addFunc(3)); //输出 6

  // 函数别名
  MyFunc myFunc;
  //可以指向任何同签名的函数
  myFunc = subtsract;
  myFunc(4, 2);
  myFunc = divide;
  myFunc(4, 2);
  //typedef 作为参数传递给函数
  calculator(4, 2, subtsract);
}

//函数别名
typedef MyFunc(int a, int b);
//根据MyFunc相同的函数签名定义两个函数
subtsract(int a, int b) {
  print('subtsract: ${a - b}');
}

divide(int a, int b) {
  print('divide: ${a / b}');
}
//typedef 也可以作为参数传递给函数
calculator(int a, int b, MyFunc func) {
  func(a, b);
}

输出:

D:\flutter\bin\cache\dart-sdk\bin\dart.exe --enable-asserts --enable-vm-service:13711 D:\Code\Flutter\FlutterHello\flutter_app\lib\function.dart
Observatory listening on http://127.0.0.1:13711/MvoL0L300yI=/

lib/function.dart: Warning: Interpreting this as package URI, 'package:flutterapp/function.dart'.
3
null
12
3
6
6
13
6
无参匿名函数
I am damon
[dd, aa, mm, oo, nn]
11
12
13
6
subtsract: 2
divide: 2.0
subtsract: 2

Process finished with exit code 0

闭包:

Function makeAddFunc(int x) {
  x++;
  return (int y) => x + y;
}

main() {
  var addFunc2 = makeAddFunc(2);
  var addFunc4 = makeAddFunc(4);
  print(addFunc2(3));
  print(addFunc4(3));
}

输出:

[Running] dart "d:\Code\Dart\test.dart"
6
8

[Done] exited with code=0 in 0.538 seconds

 

**高校专业实习管理平台设计与实现** 本设计项目旨在构建一个服务于高等院校专业实习环节的综合性管理平台。该系统采用当前主流的Web开发架构,基于Python编程语言,结合Django后端框架与Vue.js前端框架进行开发,实现了前后端逻辑的分离。数据存储层选用广泛应用的MySQL关系型数据库,确保了系统的稳定性和数据处理的效率。 平台设计了多角色协同工作的管理模型,具体包括系统管理员、院系负责人、指导教师、实习单位对接人以及参与实习的学生。各角色依据权限访问不同的功能模块,共同构成完整的实习管理流程。核心功能模块涵盖:基础信息管理(如院系、专业、人员信息)、实习过程管理(包括实习公告发布、实习内容规划、实习申请与安排)、双向反馈机制(单位评价与学生反馈)、实习支持与保障、以及贯穿始终的成绩评定与综合成绩管理。 在技术实现层面,后端服务依托Django框架的高效与安全性构建业务逻辑;前端界面则利用Vue.js的组件化特性与LayUI的样式库,致力于提供清晰、友好的用户交互体验。数据库设计充分考虑了实习管理业务的实体关系与数据一致性要求,并保留了未来功能扩展的灵活性。 整个系统遵循规范的软件开发流程,从需求分析、系统设计、编码实现到测试验证,均进行了多轮迭代与优化,力求在功能完备性、系统性能及用户使用体验方面达到较高标准。 **核心术语**:实习管理平台;Django框架;MySQL数据库;Vue.js前端;Python语言。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
在电磁散射与雷达技术的研究中,涉及粗糙表面电磁特性模拟的核心概念包括统计参数化建模方法、不同电场矢量方向的极化模式、特定方向的能量反射现象、理想化波前模型以及具有随机起伏特征的界面。以下是对这些要点的系统阐述: 统计参数化建模是一种基于表面统计特征描述其不规则性的电磁散射计算方法,尤其适用于均方根高度较小的粗糙界面在微波至毫米波频段的散射特性分析。 水平极化与垂直极化分别指电场矢量平行于地面和垂直于地面的振动状态。在雷达探测中,采用不同的极化模式有助于提升目标辨识度并抑制环境干扰。 当电磁波与物体相互作用时,部分能量沿接近入射方向返回,这种现象称为反向散射。其在雷达系统的探测灵敏度与目标特征分析中具有关键作用。 平面波是在均匀介质中传播的理想波型,其电场与磁场分布保持一致的相位关系,常作为理论简化模型用于电磁问题的解析与数值计算。 粗糙界面指具有随机起伏特征的表面,其不规则程度可通过均方根高度进行量化。这种结构特性会改变电磁波的传播路径与能量分布,进而影响信号的接收与处理。 相关压缩文件可能包含了实现上述建模方法的程序代码,通常采用数值计算语言编写,用于模拟不同极化状态下粗糙表面对平面波的反向散射响应。通过此类仿真,能够预测各类场景下的散射参数,为雷达系统设计与遥感数据解译提供理论依据。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值