美文网首页
Dart学习笔记——函数

Dart学习笔记——函数

作者: Jabir_Zhang | 来源:发表于2021-08-26 18:18 被阅读0次

方法的定义、方法的作用域

/*
  内置方法/函数:

      print();

  自定义方法:
      自定义方法的基本格式:

      返回类型  方法名称(参数1,参数2,...){
        方法体
        return 返回值;
      }
*/
void printInfo(){
  print('我是一个自定义方法');
}

int getNum(){
  var myNum=123;
  return myNum;
}

String printUserInfo(){
  return 'this is str';
}

List getList(){
  return ['111','2222','333'];
}

void main(){
  //演示方法的作用域
  void xxx(){
      aaa(){
          print(getList());
          print('aaa');
      }
      aaa();
  }
  // aaa();  错误写法 
  xxx();  //调用方法
}

方法传参

1、一般传参

//定义一个方法 求1到这个数的所有数的和
int sumNum(int n){
   var sum=0;
   for(var i=1;i<=n;i++)
   {
     sum+=i;
   }
   return sum;
} 
//定义一个方法然后打印用户信息
String printUserInfo(String username, int age) {
   //行参
   return "姓名:$username---年龄:$age";
}

2、可选参数

//定义一个带可选参数的方法 ,最新的dart定义可选参数需要指定类型默认值或者可选符号?
String printUserInfo(String username,[String sex='男',int age=0]){  //行参
  if(age!=0){
     return "姓名:$username---性别:$sex--年龄:$age";
  }
  return "姓名:$username---性别:$sex--年龄保密";
}
print(printUserInfo('张三'));
print(printUserInfo('小李','女'));
print(printUserInfo('小李','女',30));

3、命名参数

//定义一个命名参数的方法,最新的dart定义命名参数需要指定类型默认值或者可选符号?
String printUserInfo(String username, {int age = 0, String sex = '男'}) {//行参    
  if (age != 0) {
    return "姓名:$username---性别:$sex--年龄:$age";
  }
  return "姓名:$username---性别:$sex--年龄保密";
}
print(printUserInfo('张三', age: 20, sex: '未知'));

4、方法当做参数

//方法
fn1() {
  print('fn1');
}

//方法
fn2(fn) {
  fn();
}

//调用fn2这个方法 把fn1这个方法当做参数传入
fn2(fn1);

// var fn=(){
//   print('我是一个匿名方法');
// };
// fn();

函数的调用

1、箭头函数

//注意和方法的区别: 箭头函数内只能写一条语句,并且语句后面没有分号(;)
List list=['苹果','香蕉','西瓜'];
list.forEach((value){
  print(value);
});

list.forEach((value)=>print(value));

2、一般调用

// 1、定义一个方法isEvenNumber来判断一个数是否是偶数  
bool isEvenNumber(int n) {
  if (n % 2 == 0) {
    return true;
  }
  return false;
}
//  2、定义一个方法打印1-n以内的所有偶数
printNum(int n) {
  for (var i = 1; i <= n; i++) {
    if (isEvenNumber(i)) {
      print(i);
    }
  }
}
printNum(10);
}

3、匿名方法

var printNum=(){
  print(123);
};
printNum();
//带参数
var printNum=(int n){
  print(n+2);
};
printNum(12);

4、自执行方法

((int n){
  print(n);
  print('我是自执行方法');
})(12);

5、方法的递归

var sum = 1;
fn(int n) {
  sum *= n;
  if (n == 1) {
    return;
  }
  fn(n - 1);
}

fn(5);
print(sum);

闭包

/*
闭包:

    1、全局变量特点:    全局变量常驻内存、全局变量污染全局
    2、局部变量的特点:  不常驻内存会被垃圾机制回收、不会污染全局  


  /*  想实现的功能:

        1.常驻内存        
        2.不污染全局   
     
        产生了闭包,闭包可以解决这个问题.....  

        闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存)
  
        闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。
   */  
*/
//闭包
Function fn() {
  var a = 123; /*不会污染全局   常驻内存*/
  return () {
    a++;
    print(a);
  };
}

var b = fn();
b();//124
b();//125
b();//126

相关文章

  • Dart学习笔记——函数

    方法的定义、方法的作用域 方法传参 1、一般传参 2、可选参数 3、命名参数 4、方法当做参数 函数的调用 1、箭...

  • Flutter学习资料

    一、Dart学习资料 1.语言 Dart编程中文语言网 Dart学习笔记 极客学院Dart教程汇总 为 Java ...

  • Dart 基础

    为什么学习dart?谷歌推出了flutter,而flutter是基于dart语言的 dart是函数式编程语言 所有...

  • Dart学习笔记05-函数

    Dart是一种面向对象语言,函数也是对象,类型是Function。这也就意味着函数可以作为变量定义或者作为其他函数...

  • Dart record

    参考 Dart学习笔记(29):异步编程Dart编程字典子不语归来 的 Dart2基础何小有Dart实例教程 数组...

  • Dart笔记(二)函数

    方法也是对象,Function返回值类型、参数类型可省略箭头语法: = > expr 也就是{return exp...

  • Dart 笔记 6 - 函数

    函数也是对象,类型是 Function。 如果忽略了参数类型,函数仍然可以正常运行 只有一个表达式的函数,可以简写...

  • 2.1、Dart语言基础:变量、运算符、流程控制

    学习笔记,旨在于快速入门和学习Dart,其中可能会有理解错误,请指出,一起学习。 系列文章 2.1、Dart语言基...

  • 2.2、Dart语言基础:函数与闭包

    学习笔记,旨在于快速入门和学习Dart,其中可能会有理解错误,请指出,一起学习。 系列文章 2.1、Dart语言基...

  • 2.4、Dart语言基础:异步

    学习笔记,旨在于快速入门和学习Dart,其中可能会有理解错误,请指出,一起学习。 系列文章 2.1、Dart语言基...

网友评论

      本文标题:Dart学习笔记——函数

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