• 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语句;

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

  • 相关阅读:
    【计算机视觉】OpenCV篇(6)
    【计算机视觉】OpenCV篇(5)
    C++解决头文件相互包含问题的方法
    【计算机视觉】OpenCV篇(4)
    java mysql多次事务 模拟依据汇率转账,并存储转账信息 分层完成 dao层 service 层 client层 连接池使用C3p0 写入库使用DBUtils
    MySQL事务隔离级别 解决并发问题
    在jdbc基础上进阶一小步的C3p0 连接池(DBCP 不能读xml配置文件,已淘汰) 和DBUtils 中两个主要类QueryRunner和ResultSetHandler的使用
    java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据
    java XML 通过BeanUtils的population为对象赋值 根据用户选择进行dom4j解析
    java基础 xml 使用dom4j解析 xml文件 servlet根据pattern 找到class
  • 原文地址:https://www.cnblogs.com/upwgh/p/11167393.html
Copyright © 2020-2023  润新知