Flutter学习笔记(4)--Dart函数
如需转载,请注明出处:Flutter学习笔记(4)--Dart函数
Dart是一个面向对象的语言,所以函数也是对象,函数属于Function对象,函数可以像参数一样传递给其他函数,这样便于做回调处理;
一.指定返回值的函数
//判断两个字符串是否相等
bool isEqual(String name1,String name2){
return name1 == name2;
}
print(isEqual('张三','李四')); //打印结果:false
上面的示例我们指定了参数的类型,在不确定参数的类型的情况下,我们的参数可以用dynamic、object或var来接收参数
//判断两个字符串是否相等
bool isEqual(dynamic name1,var name2){
return name1 == name2;
}
print(isEqual('张三','李四')); //打印结果:false
二.不指定返回值的函数
//判断两个字符串是否相等
isEqual(String name1,String name2){
return name1 == name2;
}
print(isEqual('张三','李四')); //打印结果:false //打印文本
isEqual(dynamic name1,object name2){
var result = '$name1和$name2的名字是否相同';
if(name1 == name2){
result = '$name1和$name2的名字不同';
}else{
result = '$name1和$name2的名字相同';
}
return result;
} print(isEqual('张三','李四')); //打印结果:张三和李四的名字不同
三.如果函数里面只有一个表达式,则可以这样简写
void printSth(String content) => print('hello word');
四.可选参数
一个函数可以有两种参数:必须的和可选的,必须参数要放在前面,可选参数(即可以不传)要放在后面;
可选参数又分为两种:位置参数和命名参数,两种参数都可以设置默认值,如果没有设置默认值,则默认值为null;
1.可选的命名参数
定义一个函数,使用{String param1,String param2,...........}指定命名参数,在调用方法的时候,需要指出你要给哪个参数进行传值,如:
(1)无默认值例子:
void printSth(String param1,{String param2,String param3}) => print(param1+'让'+param2+'打'+param3);
printSth('张三',param2:'李四',param3:'王五');
//打印结果:张三让李四打王五
void printSth(String param1,{String param2,String param3}) => print(param1+'让'+param2+'打'+param3);
printSth('张三',param2:'李四');
//打印结果:张三让李四打null
这里我们可以看到必须参数和可选的命名参数的区别,必须参数直接传值,可选的命名参数需要指定参数名进行传值,如果没有传值,则默认值为null;
(2)有默认值的例子
void printSth(String param1,{String param2,String param3:'王五'}) => print(param1+'让'+param2+'打'+param3);
printSth('张三',param2:'李四');
//打印结果:张三让李四打王五
2.可选的位置参数
与可选的命名参数不同,可选的位置参数需要通过[]将参数包裹起来,就能标识成位置参数
(1)没有默认值的例子
void printSth(String param1,[String param2,String param3]) => print(param1+'让'+param2+'打'+param3);
printSth('张三','李四','王五');
//打印结果:张三让李四打王五
void printSth(String param1,[String param2,String param3]) => print(param1+'让'+param2+'打'+param3);
printSth('张三','李四');
//打印结果:张三让李四打null
(2)有默认值的例子
void printSth(String param1,[String param2,String param3 = '王五']) => print(param1+'让'+param2+'打'+param3);
printSth('张三','李四');
//打印结果:张三让李四打王五
总结一下命名参数和位置参数
命名参数:使用{}将参数包裹起来,传参时需要指定参数名,默认值使用“:”指定;
位置参数:使用[]将参数包裹起来,传参时不需要指定参数名,按位排,默认值使用“=”指定;
五.main函数
Flutter应用程序必须要有一个main函数,和其他语言一样作为程序的入口函数,下面的代码表示应用要启动MyApp类;
void main() => runApp(MyApp());
六.函数的返回值
在Dart语言中,函数的返回值有如下特点:
1.所有的函数都会有返回值;
2.如果没有指定函数的返回值,则默认的返回值是null;
3.没有返回值的函数,系统会在最后添加隐式的return语句;
Flutter学习笔记(4)--Dart函数的更多相关文章
- Flutter学习笔记(3)--Dart变量与基本数据类型
一.变量 在Dart里面,变量的声明使用var.Object或Dynamic关键字,如下所示: var name = ‘张三’: 在Dart语言里一切皆为对象,所以如果没有将变量初始化,那么它的默认值 ...
- Flutter学习笔记(8)--Dart面向对象
如需转载,请注明出处:Flutter学习笔记(7)--Dart异常处理 Dart作为高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式,基于mixin的继承方式是指:一个类可以继承自多 ...
- Flutter学习笔记(6)--Dart流程控制语句
如需转载,请注明出处:Flutter学习笔记(5)--Dart流程控制语句 条件语句:if.if...elseif.if...elseif...else ; ) { print('优秀'); } &g ...
- Flutter学习笔记(5)--Dart运算符
如需转载,请注明出处:Flutter学习笔记(5)--Dart运算符 先给出一个Dart运算符表,接下来在逐个解释和使用.如下: 描述 ...
- Flutter学习笔记(6)--Dart异常处理
如需转载,请注明出处:Flutter学习笔记(6)--Dart异常处理 异常是表示发生了意外的错误,如果没有捕获异常,引发异常的隔离程序将被挂起,并且程序将被终止: Dart代码可以抛出并捕获异常,但 ...
- Flutter学习笔记(11)--文本组件、图标及按钮组件
如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 文本组件 文本组件(text)负责显示文本和定义显示样式,下表为text常见属性 Text组件属性及描述 属性名 类型 默认 ...
- Flutter学习笔记(12)--列表组件
如需转载,请注明出处:Flutter学习笔记(12)--列表组件 在日常的产品项目需求中,经常会有列表展示类的需求,在Android中常用的做法是收集数据源,然后创建列表适配器Adapter,将数据源 ...
- Flutter学习笔记(13)--表单组件
如需转载,请注明出处:Flutter学习笔记(13)--表单组件 表单组件是个包含表单元素的区域,表单元素允许用户输入内容,比如:文本区域,下拉表单,单选框.复选框等,常见的应用场景有:登陆.注册.输 ...
- Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解
如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 最近一段时间生病了,整天往医院跑,也没状态学东西了,现在是好了不少了,也该继续学习啦!!! ...
随机推荐
- Qt移动应用开发(六):QML与C++互动
Qt移动应用开发(六):QML与C++互动 上一篇文章讲到了在Qt Quick中实现场景切换的一种可能的方法,场景切换是诸如游戏等应用在内必需要面临的技术难点,所以场景切换并没有通行的方法,依据自己的 ...
- 如何快速生成数据文件(fsutil命令,使用CreateFile和SetEndOfFile API函数,fopen和fseek RTL函数)
1. fsutil 命令 文件会瞬间生成,因为实际上Windows只是分配了名称.地址和空间给该文件,并没有读写任何文件内容 100M=1024x1024x100 fsutil file create ...
- WPF中画蚂蚁线的实现
这是一个比较偏的功能,看了其他的很多博客都没有介绍,最后看自己试出来了. 先上效果图 <Path Data="M 100,240 C 510,300 80,100 300,160 H4 ...
- wpf屏蔽快捷键alt+space,alt+F4
/// <summary> /// 阻止 alt+f4和alt+space 按键 /// </summary> /// <par ...
- Windows 10开发基础——XML和JSON (二)
主要内容: Linq to XML Newtonsoft.Json.Linq来解析JSON 博客园RSS(http://www.cnblogs.com/rss)的解析 UWP调用自己实现的Web AP ...
- Win8MetroC#数字图像处理--2.1图像灰度化
原文:Win8MetroC#数字图像处理--2.1图像灰度化 [函数说明] 图像灰度化函数GrayProcess(WriteableBitmap src) [算法说明] 图像灰度化就是去掉彩色 ...
- 将多个文本文件内的数据导入到Datagridview
private BindingList listXSxxInfoList = new BindingList(); openFileDialog1.Multiselect = true;//允许选择多 ...
- ARTS 12.10 - 12.14
从陈皓博主的专栏里学到一个概念,争取可以坚持下去: 我在我的读者群中推荐出 ARTS 的任务,每个人每周一个 Algorithm,Review 一篇英文文章,总结一个工作中的技术 Tip,以及 Sha ...
- 关于jquery.fileupload结合PHP上传图片的开发用法流程
这阵子做了一个项目,涉及到了图片上传,以往用的都是uploadify这个插件,感觉它在PC上的使用还是很强大的, 不过最近这个项目涉及到了移动端的上传,其实uploadify也可以,但是他有一个 up ...
- Qt中实现单例模式(SingleTon),大约有3种办法
Qt中实现单例模式(SingleTon) 单例模式分为“饥汉”和“饿汉”两种版本,也正是线程安全问题使得原本简单的单例模式变得复杂.由于单例模式很常用,Boost库中有强大的泛型单例实现,我也利用Qt ...