如需转载,请注明出处: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语句;

下一章节:lutter学习笔记(5)--Dart运算符

Flutter学习笔记(4)--Dart函数的更多相关文章

  1. Flutter学习笔记(3)--Dart变量与基本数据类型

    一.变量 在Dart里面,变量的声明使用var.Object或Dynamic关键字,如下所示: var name = ‘张三’: 在Dart语言里一切皆为对象,所以如果没有将变量初始化,那么它的默认值 ...

  2. Flutter学习笔记(8)--Dart面向对象

    如需转载,请注明出处:Flutter学习笔记(7)--Dart异常处理 Dart作为高级语言,支持面向对象的很多特性,并且支持基于mixin的继承方式,基于mixin的继承方式是指:一个类可以继承自多 ...

  3. Flutter学习笔记(6)--Dart流程控制语句

    如需转载,请注明出处:Flutter学习笔记(5)--Dart流程控制语句 条件语句:if.if...elseif.if...elseif...else ; ) { print('优秀'); } &g ...

  4. Flutter学习笔记(5)--Dart运算符

    如需转载,请注明出处:Flutter学习笔记(5)--Dart运算符 先给出一个Dart运算符表,接下来在逐个解释和使用.如下:                            描述       ...

  5. Flutter学习笔记(6)--Dart异常处理

    如需转载,请注明出处:Flutter学习笔记(6)--Dart异常处理 异常是表示发生了意外的错误,如果没有捕获异常,引发异常的隔离程序将被挂起,并且程序将被终止: Dart代码可以抛出并捕获异常,但 ...

  6. Flutter学习笔记(11)--文本组件、图标及按钮组件

    如需转载,请注明出处:Flutter学习笔记(10)--容器组件.图片组件 文本组件 文本组件(text)负责显示文本和定义显示样式,下表为text常见属性 Text组件属性及描述 属性名 类型 默认 ...

  7. Flutter学习笔记(12)--列表组件

    如需转载,请注明出处:Flutter学习笔记(12)--列表组件 在日常的产品项目需求中,经常会有列表展示类的需求,在Android中常用的做法是收集数据源,然后创建列表适配器Adapter,将数据源 ...

  8. Flutter学习笔记(13)--表单组件

    如需转载,请注明出处:Flutter学习笔记(13)--表单组件 表单组件是个包含表单元素的区域,表单元素允许用户输入内容,比如:文本区域,下拉表单,单选框.复选框等,常见的应用场景有:登陆.注册.输 ...

  9. Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解

    如需转载,请注明出处:Flutter学习笔记(15)--MaterialApp应用组件及routes路由详解 最近一段时间生病了,整天往医院跑,也没状态学东西了,现在是好了不少了,也该继续学习啦!!! ...

随机推荐

  1. WPF 4 DataGrid 控件(进阶篇二)

    原文:WPF 4 DataGrid 控件(进阶篇二)      上一篇<WPF 4 DataGrid 控件(进阶篇一)>中我们通过DataGridTemplateColumn 类自定义编辑 ...

  2. Win8 Metro(C#)数字图像处理--2.55OSTU法图像二值化

    原文:Win8 Metro(C#)数字图像处理--2.55OSTU法图像二值化  [函数名称] Ostu法图像二值化      WriteableBitmap OstuThSegment(Writ ...

  3. 微信小程序把玩(十一)icon组件

    原文:微信小程序把玩(十一)icon组件 这些是提供的所支持的图标样式,根据需求在此基础上去修改大小和颜色. 主要属性: 使用方式: wxml <!--成功图标--> <icon t ...

  4. iBatisNet 中 iterate标签的使用

    <iterate>标签,顾名思义是用来遍历标签用的. 支持的属性如下: 属性 说明 是否必选 open 遍历后生成的这些sql,开始的第一个符号 可选 close 遍历后生成的这些sql, ...

  5. How to setup Assigned Access in Windows 10 (Kiosk Mode) 设置分配的访问权限(Kiosk模式)

    Let’s say you’re building some sort of ingenious mechanical contraption to be displayed in public th ...

  6. LINQ学习笔记(二)

    上一篇是根据百度百科写的随便,同时也纠正我对LINQ的看法,因为首次接触LINQ是使用EF对数据库数据的操作. 所以误以为它操作数据库的一种新手段. LINQ语言集成查询是一组技术的名称,这些技术建立 ...

  7. Newtonsoft.Json高级用法之枚举中文转义

    最近看博客园中 焰尾迭的两篇关于"Newtonsoft.Json高级用法"的文章受到了很多人的评论,一度登入到头条推荐. 今天我就不再重复焰尾迭博文中的一些提过的Newtonsof ...

  8. Delphi中取得汉字的首字母(十分巧妙)

    function Tdm.GetHzPy(const AHzStr: string): string;const  ChinaCode: array[0..25, 0..1] of Integer = ...

  9. How To Compile Qt with Visual Studio

    How To Compile Qt with Visual Studio FEBRUARY 1, 2011 This post is a step-by-step guide on how to co ...

  10. LigerUI Dialog 滚动条问题

    LigerUI 使用Dialog时,自动显示滚动条无法隐藏.设置css 取消滚动条,不影响页面滚动条 .l-dialog-content { overflow: hidden;}