美文网首页
Dart/Flutter基础-函数(方法)

Dart/Flutter基础-函数(方法)

作者: SoundYoung | 来源:发表于2019-08-16 11:08 被阅读0次
    import 'package:flutter/foundation.dart';
    
    class DartMethodBasic {
    
      //调用内置方法 void 表示无返回值
    
      static void test() {
    
        print(arrowMethod);
    
      }
    
      //有返回值的方法,返回类型不能设置成var,不知道返回值类型可以不写 比如去掉String  依然能够return
    
      String haveR() {
    
        int i = 0;
    
        return i.toString();
    
      }
    
      //有返回值 有参数
    
      int haveReAndP(int value) {
    
        return value++;
    
      }
    
      //箭头方法 将返回hello字符串  方法里只有一行代码  可以用箭头方法
    
      static String arrowMethod() => 'hello';
    
      //方法里面可以嵌套方法
    
      void innerMethod() {
    
        //这是一个方法的内部方法
    
        String helloText() {
    
          haveReAndP(1); //内部发发可以调用外部的方法
    
          return 'hello····';
    
        }
    
        helloText(); //外部的方法无法调用该方法
    
      }
    
      //调用可选参数的方法
    
      void methodTwo () {
    
        String address = getLocName('浙江', '杭州');
    
        print(address);
    
        String address2 = getLocName('浙江', '杭州','火炬大道','86');
    
        debugPrint(address2);
    
    
    
        // String address3 = getLocNameUseParamName('浙江', '杭州','火炬大道','86');//报错,用下面的方式
    
        String address3 = getLocNameUseParamName('浙江', '杭州',street:'火炬大道',citycode:'86');
    
        //命名参数为选填参数,方法里面的命名参数最好给默认值
    
        String address4 = getLocNameUseParamName('浙江', '杭州');
    
        String address5 = getLocNameAllUseParamName(privance: '浙江',city: '杭州',street:'火炬大道',citycode:'86');
    
      }
    
      //可选参数方法,后面的street  citycode为可选参数,使用见methodtwo,可选参数用[]包裹
    
      String getLocName (String privance,String city,[String street,String citycode]){
    
          StringBuffer stringBuffer = new StringBuffer();
    
          stringBuffer.write(privance);
    
          stringBuffer.write(city);
    
          if(street!=null) {
    
            stringBuffer.write(street);
    
          }
    
          if(citycode!=null) {
    
            stringBuffer.write(citycode);
    
          }
    
          return stringBuffer.toString();
    
    
    
      }
    
      //默认参数 street上有一个默认的参数 内容是‘江南大道’
    
      String getLocNameWithDefalut (String privance,String city,[String street='江南大道',String citycode]){
    
          StringBuffer stringBuffer = new StringBuffer();
    
          stringBuffer.write(privance);
    
          stringBuffer.write(city);
    
          if(street!=null) {
    
            stringBuffer.write(street);
    
          }
    
          if(citycode!=null) {
    
            stringBuffer.write(citycode);
    
          }
    
          return stringBuffer.toString();
    
    
    
      }
    
      //命名参数 命名参数用{}包裹,调用此类方法见methodTwo
    
      //默认参数 street上有一个默认的参数
    
      String getLocNameUseParamName (String privance,String city,{String street='江南大道',String citycode}){
    
          StringBuffer stringBuffer = new StringBuffer();
    
          stringBuffer.write(privance);
    
          stringBuffer.write(city);
    
          if(street!=null) {
    
            stringBuffer.write(street);
    
          }
    
          if(citycode!=null) {
    
            stringBuffer.write(citycode);
    
          }
    
          return stringBuffer.toString();
    
    
    
      }
    
      //全部都是命名参数的方法
    
      String getLocNameAllUseParamName ({String privance='江苏',String city='南京',String street='玄武湖街道',String citycode}){
    
          StringBuffer stringBuffer = new StringBuffer();
    
          stringBuffer.write(privance);
    
          stringBuffer.write(city);
    
          if(street!=null) {
    
            stringBuffer.write(street);
    
          }
    
          if(citycode!=null) {
    
            stringBuffer.write(citycode);
    
          }
    
          return stringBuffer.toString();
    
    
    
      }
    
      /*把方法当做参数,调用的方法*/
    
      void fnOne() {
    
        print('我是fnone方法');
    
      }
    
      void fnTwo (fn) {
    
        fn();
    
      }
    
      //当调用fnThree的时候,fnthree回调用fntwo,并把fnone穿过去,最终输入结果为‘我是fnone方法’
    
      void fnThree () {
    
        fnTwo(fnOne);
    
      }
    
      //匿名方法 匿名方法就是等号后面的部分,它是没有名字的,并且最后的大括号后面要加分号,必须用var和final修饰
    
      var person = () {
    
        print('我是好人');
    
      };
    
      /** 方法递归 求6的阶乘*/
    
      var sum = 1;
    
      void countSum (value) {
    
        sum*=value;
    
        if(value == 1) {
    
          print('6的阶乘的值'+sum.toString());
    
        }
    
        countSum(value-1);
    
      }
    
      void computeSix() {
    
        //求6的阶乘
    
        countSum(6);
    
      }
    
    }

    相关文章

      网友评论

          本文标题:Dart/Flutter基础-函数(方法)

          本文链接:https://www.haomeiwen.com/subject/nnrfsctx.html