【Flutter】Dart的方法中的可选参数、方法作为参数传递
1. 写在前面
在上篇文章中介绍了Dart
的方法与箭头函数,那么现在就继续来学习 Dart
的方法中的可选参数、方法作为参数传递。
【Flutter】苹果Mac电脑配置flutter开发环境
【Flutter】 Android Studio 安装第三方模拟器—网易MuMu
【Flutter】项目运行报错Failed to find Build Tools revision 29.0.2
【Flutter】flutter doctor 报错Android license status unknown. Run `flutter doctor --android-licenses‘
【Flutter】如何新建项目,运行你的第一个 flutter 工程项目
【Flutter】Dart中的var、final 和 const基本使用
【Flutter】Dart数据类型之num
【Flutter】Dart数据类型之String
【Flutter】Dart的数据类型list&Map(数组和字典)
【Flutter】Dart的方法与箭头函数
2. 可选参数
首先来看看,方法中的可选参数
sum1 (int a ,{b,c}){b ??= 1;c ??= 2;return a + b + c;
}
上面的方法里面,b
和 c
是可选参数,调用的时候也会提示:
因为可选的 b
和c
参数没有指定类型,所以是 dynamic
动态类型。
可选参数:调用方法的时候,必须带上形参的名字
void functionTest() {print(sum1(1,c:2,b:3));
}
// 可选参数:调用的方法的时候,必须带上形参的名字,顺序可以不一样
sum1 (int a ,{b,c}){//如果 b/c 为 空就赋值为 1、2b ??= 1;c ??= 2;return a + b + c;
}
可选参数,可以选择给值,也可以选择不给,如果有多个可选参数,可以选择其中一个赋值。
那可选参数是否可以加上类型,如下这么写呢?
sum1 (int a ,{int b,int c}){
这样写会报错的,如下:
错误:参数“b”的值不能为“null”,因为其类型为“int”,但隐式默认值为“null”。
// nullability
sum1 (int a ,{int? b,int? c}){// int? 告诉编译器,我处理了后面为空的情况//如果 b/c 为 空就赋值为 1、2b ??= 1;c ??= 2;return a + b + c;
}
加个?
就可以了,就是告诉编译器这是nullability
类型,告诉编译器如果为空,我后面自己会处理的。
不使用?
的话,就直接赋值默认值就可以
sum1 (int a ,{int b=1,int c=2}){// b ??= 1;// c ??= 2;return a + b + c;
}
上面的可选参数需要带形参名,可以指定是给 b
还是c
赋值,下面这种写法,不需要带形参名,但是不能指定赋值
sum1 (int a ,[int b=1,int c=2])
如果指定赋值会报错,如下:
跳过中间某个也是会报错的,如下:
只能按顺序赋值
可选参数全部赋值如下:
print(sum1(1,2,3));
3. 方法作为参数传递
方法也是一个对象,可以赋值给一个变量,可以直接调用运行
void functionTest() {var hello = jpHello();hello(); //可以直接调用
}
jpHello(){print("hello reno");
}
方法作为参数传递,当然它和我们 OC
中的 block
不一样,用法倒是差不多,那么下面举例看看。
void functionTest() {var list = [1,2,3,4,5];list.forEach(print);
}
这里调用系统的forEach
方法,传入一个方法参数 print
打印list
内容。
我们去看看forEach
方法的内部实现
forEach
接受一个外界传进来的action
方法,再遍历方法的调用者this
里面的每一个元素element
,再调用action
,传入element
。
那我们就自己实现一个forEach
功能的方法吧!
void functionTest() {var list = [1,2,3,4,5];// list.forEach(print);forEachTest(list,print);}
//自定义一个 forEach
forEachTest(List list,void func(var element)){for (var e in list) func(e);
}
测试打印结果如下:
这就是 dart
的方法作为参数,也就是一个对象,可以进行参数传递,这也是使用场景最多的。
4. 写在后面
关注我,更多内容持续输出
- CSDN
- 掘金
- 简书
【Flutter】Dart的方法中的可选参数、方法作为参数传递相关推荐
- Flutter 可选参数方法构建
在Flutter 中不存在Java 方法重载概念,类似 test(), test(int a), test(String a) 这种一个类里面多个不同参数形式的相同名称的方法,但提供了可选参数构造方 ...
- C# 中的可变参数方法(VarArgs)
首先需要明确一点:这里提到的可变参数方法,指的是具有 CallingConventions.VarArgs 调用约定的方法,而不是包含 params 参数的方法.可以通过MethodBase.Call ...
- 在JAVA语言程序中main_在Java程序main方法中,正确的参数是
[单选题]下列叙述中,错误的是 [填空题]Access属于()数据库,Access中,不允许在主关键字字段中有重复值或(). [单选题]如下哪些字符串是Java中的标识符? [填空题]常用的基本电量传 ...
- 当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的.
当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 答:是值传递.Java 编程语言只有值传递参数.当一个对象实例作为一个参数被传 ...
- Java中的可变参数方法
1.一个小例子: 为了比较直观地说明Java的可变参数方法,我们举个例子: //求若干个整型数中的最大值 public int getMax(int... items){ //定义可变参数itemsi ...
- Mybatis的Mapper方法中传递map参数的写法
Mybatis的Mapper方法中传递map参数的写法 当我们在进行数据分页查询时,如果想让Mybatis的分页查询返回Map对象的集合,我们需要在查询的方法上使用单个参数或者使用Map对象作为参数进 ...
- 在jQuery方法中能调用JS方法吗?
在jQuery方法中能调用JS方法吗? 能,在jQuery方法中直接写入要调用已写好的方法名()即可. 在项目中,有多个地方用到结账的功能. 比如, 点击结账按钮,由JS获取对应行列的数据,进行计算并 ...
- flutter中的可选参数
在iOS原生开发中,只要是方法定义了形数,在方法调用时就必须在对应的位置上传递实参:在Flutter中参数定义可以定义非必选参数,可选参数,具名参数和不具名参数. 非具名参数 不具名参数的定义不使用{ ...
- Dart可选参数方法的写法!
一, 可选参数的方法 有两种, 1,大括号{}包围的. 特点:实现方法时,可以指定具体传递某一个参数. 2,中括号[]包围的. 特点,多个可选参数时,默认按照前后顺序传递. 共同点:必填的参数,必须要 ...
- Struts2中action接受参数方法
Struts2中Action接收参数的方法主要有以下三种: 1.使用Action的属性接收参数: a.定义:在Action类中定义属性,创建get和set方法: b.接收:通过属性接收参数 ...
最新文章
- 使用 mkdocs 搭建个人 wiki 站点
- 安卓4.4.4安装哪个微信版本_微信一个开关,速度立马提升一倍
- 始化mysql系统库_安装和初始化mysql-8.0.11-winx64
- 自己都不觉得自己值钱,别人怎么觉得你值钱?
- vb.net读取excel并写入dgv_读取PDF中的表格写入EXCEL?30行代码搞定
- mongodb 监控分析命令
- android生命周期_Android片段生命周期
- BackBone及其实例探究
- android studio trace,天猫Android性能优化1—AndroidStudio内置的Traceview视图
- 冒泡排序图解+代码示例
- 【应急响应】————7、服务器大量发包
- C语言使用文件指针时遇到的位置问题
- ubuntu 串口调试助手
- iOS多线程——GCD底层探索中(dispatch_async与dispatch_sync源码)
- 前端图片放大缩小/比例自适应/打码/码大小可调整
- IDEA Material Theme UI 暗黑系主题的安装
- webman apidoc安装、生成接口文档
- 计算机应用研究所912,2019清华大学计算机考研912考试初试常问问题?
- java B2C电商系统架构
- linux操作系统学习网站整理
热门文章
- 安装了Python2.X和Python3.X后Python2.X IDLE打不开解决办法总结
- 一步步构造自己的vue2.0+webpack环境
- Xtrabackup2.4.8备份、还原、恢复Mysql5.7.19实操
- asp.net优化方案
- Hibernate 中 set 里的属性及定义
- Ext JS 6学习文档-第8章-主题和响应式设计
- LINQ 花3个礼拜的时间来弄清楚
- 反射实例化不同类型的实例
- Openwrt Uboot烧写
- 面试准备——springboot相关