美文网首页
Dart(九)方法

Dart(九)方法

作者: 书写不简单 | 来源:发表于2018-12-29 13:47 被阅读0次

    Dart是一种真正的面向对象语言,所以即使是函数也是对象,并且有一个类型,Function。这意味着函数可以分配给变量或作为参数传递给其他函数。您还可以调用Dart类的实例,就好像它是一个函数一样。

    • 方法可作为对象赋值给其他变量

    • 方法可作为参数传递给其他方法

    void main() {
    
      // 方法作为一个变量
      var func_world = printHello;
      func_world();
      //
      Function func_world2 = printHello;
      func_world2();
    
      // print 方法作为参数
      var list = [1, 2, 3, 4];
      list.forEach(print);
    
      // 
      var list2 = ['h', 'e', 'l', 'l', 'o'];
      // 此处的times作为参数传递
      print(listTimes(list2, times));
    
    }
    
    void printHello(){
      print('this is a world');
    }
    
    List listTimes(List list, String times(str)){
      List listnew = [];
      // times()方法作为参数,在该方法内部调用
      for (var i = 0; i < list.length; i++) {
        listnew.add(times(list[i]));
      }
      return listnew;
    
    }
    
    String times(str){
      return str * 3;
    }
    

    结果:

    this is a world
    this is a world
    1
    2
    3
    4
    [hhh, eee, lll, lll, ooo]
    

    返回值类型使得运行高效,但是如果你省略了这些类型,这个函数仍然可以工作:

    isNoble(atomicNumber) {
      return _nobleGases[atomicNumber] != null;
    }
    

    对于只包含一个表达式的函数,可以使用简写语法:

    bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;
    

    "=> expr"语法是{ return expr; }的简写,=>符号有时被称为胖箭头语法。在箭头(=>)和分号(;)之间只能出现表达式(而不是语句)。例如,您不能在那里放置if语句,但是您可以使用条件表达式。

    匿名方法

    上文刚刚提到的方法就是这里说的匿名方法:

    定义:

    (参数1,参数2,....){
    
        方法体...
    
        return 返回值
    
     }
    
    • 匿名方法 + 省略参数 作为变量调用
    void main() {
    
      // 匿名方法,以及省略参数
      var func = (){
        print('匿名方法,以及省略参数');
      };
      // 调用
      func();
    
    }
    
    • 匿名方法 + 传递参数 作为变量调用
    void main() {
    
      // 匿名方法,以及省略参数
      var func = (content){
        print('匿名方法,参数是${content}');
      };
      // 调用
      func('zhoubin');
    
    }
    
    • 匿名方法作为参数被传递
    void main() {
    
      List list33 = ['z','b'];
      // 匿名方法,
      // (str){
      //  return str * 6;
      // }
      // 作为参数被传递
      print(listTimes(list33, (str){
        return str * 6;
      }));
    }
    //
    //
    // String :匿名函数的返回值类型
    // timesnew:接收的匿名函数的"标识"
    // (str):匿名函数的参数
    List listTimes(List list, String timesnew(str)){
      List listnew = [];
      for (var i = 0; i < list.length; i++) {
        listnew.add(timesnew(list[i]));
      }
      return listnew;
    
    }
    
    

    相关文章

      网友评论

          本文标题:Dart(九)方法

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