/*
内置方法/函数: 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(){ // print('调用系统内置的方法'); // printInfo();
// var n=getNum();
// print(n); // print(printUserInfo()); // print(getList()); // print(getList()); //演示方法的作用域
void xxx(){ aaa(){ print(getList());
print('aaa');
}
aaa();
} // aaa(); 错误写法 xxx(); //调用方法 }
//调用方法传参

main() {

//1、定义一个方法 求1到这个数的所有数的和      60    1+2+3+。。。+60

 /*
int sumNum(int n){
var sum=0;
for(var i=1;i<=n;i++)
{
sum+=i;
}
return sum;
} var n1=sumNum(5);
print(n1);
var n2=sumNum(100);
print(n2); */ //2、定义一个方法然后打印用户信息 // String printUserInfo(String username,int age){ //行参
// return "姓名:$username---年龄:$age";
// } // print(printUserInfo('张三',20)); //实参 //3、定义一个带可选参数的方法 // String printUserInfo(String username,[int age]){ //行参 // if(age!=null){
// return "姓名:$username---年龄:$age";
// }
// return "姓名:$username---年龄保密"; // } // // print(printUserInfo('张三',21)); //实参 // print(printUserInfo('张三')); //4、定义一个带默认参数的方法 // String printUserInfo(String username,[String sex='男',int age]){ //行参 // if(age!=null){
// return "姓名:$username---性别:$sex--年龄:$age";
// }
// return "姓名:$username---性别:$sex--年龄保密"; // } // print(printUserInfo('张三')); // print(printUserInfo('小李','女')); // print(printUserInfo('小李','女',30)); //5、定义一个命名参数的方法 // String printUserInfo(String username,{int age,String sex='男'}){ //行参 // if(age!=null){
// return "姓名:$username---性别:$sex--年龄:$age";
// }
// return "姓名:$username---性别:$sex--年龄保密"; // } // print(printUserInfo('张三',age:20,sex:'未知')); //6、实现一个 把方法当做参数的方法 // var fn=(){ // print('我是一个匿名方法');
// };
// fn(); //方法
fn1(){
print('fn1');
} //方法
fn2(fn){ fn();
} //调用fn2这个方法 把fn1这个方法当做参数传入
fn2(fn1);
}
void main(){

/*需求:使用forEach打印下面List里面的数据*/

    // List list=['苹果','香蕉','西瓜'];
// list.forEach((value){
// print(value);
// });
// list.forEach((value)=>print(value));
// list.forEach((value)=>{
// print(value)
// }); /*需求:修改下面List里面的数据,让数组中大于2的值乘以2*/ List list=[4,1,2,3,4]; // var newList=list.map((value){ // if(value>2){
// return value*2;
// }
// return value; // });
// print(newList.toList()); // var newList=list.map((value)=>value>2?value*2:value); // print(newList.toList()); /*
需求: 1、定义一个方法isEvenNumber来判断一个数是否是偶数
2、定义一个方法打印1-n以内的所有偶数
*/ //定义一个方法isEvenNumber来判断一个数是否是偶数
bool isEvenNumber(int n){
if(n%2==0){
return true;
}
return false;
} printNum(int n){
for(var i=1;i<=n;i++){
if(isEvenNumber(i)){
print(i);
}
}
} printNum(10); }
int getNum(int n){

  return n;
} void main(){ // print(getNum(12)); //匿名方法 // var printNum=(){ // print(123);
// }; // printNum(); // var printNum=(int n){ // print(n+2);
// }; // printNum(12); //自执行方法 // ((int n){
// print(n);
// print('我是自执行方法');
// })(12); //方法的递归
// var sum=1;
// fn(n){
// sum*=n;
// if(n==1){
// return ;
// }
// fn(n-1); // } // fn(5);
// print(sum); //通过方法的递归 求1-100的和 var sum=0;
fn(int n){ sum+=n; if(n==0){
return;
}
fn(n-1);
} fn(100);
print(sum); }
/*
闭包: 1、全局变量特点: 全局变量常驻内存、全局变量污染全局
2、局部变量的特点: 不常驻内存会被垃圾机制回收、不会污染全局 /* 想实现的功能: 1.常驻内存
2.不污染全局 产生了闭包,闭包可以解决这个问题..... 闭包: 函数嵌套函数, 内部函数会调用外部函数的变量或参数, 变量或参数不会被系统回收(不会释放内存) 闭包的写法: 函数嵌套函数,并return 里面的函数,这样就形成了闭包。 */
*/
/*全局变量*/
var a=123; void main(){ // print(a); // fn(){
// a++;
// print(a);
// }
// fn();
// fn();
// fn(); //局部变量
// printInfo(){
// var myNum=123;
// myNum++;
// print(myNum);
// }
// printInfo(); // printInfo();
// printInfo(); //闭包 fn(){
var a=123; /*不会污染全局 常驻内存*/
return(){
a++;
print(a);
};
}
var b=fn();
b();
b();
b();
}

Dart匿名方法函数和闭包的更多相关文章

  1. 【Dart学习】-- Dart之匿名方法 & 回调函数 & 闭包

    一,匿名方法定义 (参数1,参数2,....){ 方法体... return 返回值 } 二,匿名方法特性 可赋值给变量,通过变量进行调用 可在其他方法中直接调用或传递给其他方法 void main( ...

  2. 匹夫细说C#:委托的简化语法,聊聊匿名方法和闭包

    0x00 前言 通过上一篇博客<匹夫细说C#:庖丁解牛聊委托,那些编译器藏的和U3D给的>的内容,我们实现了使用委托来构建我们自己的消息系统的过程.但是在日常的开发中,仍然有很多开发者因为 ...

  3. JavaScript 闭包系列二(匿名函数及函数的闭包)

    一. 匿名函数 1. 函数的定义,可分为三种 1) 函数声明方式 function double(x) {     return 2*x; } 2)Function构造函数,把参数列表和函数体都作为字 ...

  4. C# 从CIL代码了解委托,匿名方法,Lambda 表达式和闭包本质

    前言 C# 3.0 引入了 Lambda 表达式,程序员们很快就开始习惯并爱上这种简洁并极具表达力的函数式编程特性. 本着知其然,还要知其所以然的学习态度,笔者不禁想到了几个问题. (1)匿名函数(匿 ...

  5. JavaScript基础---作用域,匿名函数和闭包

    匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数. 一.匿名函数 //普通函数 function box() { //函数名是 box return 'TT'; } //匿名函数 f ...

  6. JavaScript基础---作用域,匿名函数和闭包【转】

    匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数. 一.匿名函数 //普通函数 function box() { //函数名是 box return 'TT'; } //匿名函数 f ...

  7. [从jQuery看JavaScript]-匿名函数与闭包(Anonymous Function and Closure)【转】

    (function(){ //这里忽略jQuery所有实现 })(); 半年前初次接触jQuery的时候,我也像其他人一样很兴奋地想看看源码是什么样的.然而,在看到源码的第一眼,我就迷糊了.为什么只有 ...

  8. 第一百一十节,JavaScript匿名函数和闭包

    JavaScript匿名函数和闭包 学习要点: 1.匿名函数 2.闭包 匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数.声明:本节内容需要有面向对象和少量设计模式基础,否则无法听懂 ...

  9. JavaScript(第十五天)【匿名函数和闭包】

      学习要点: 1.匿名函数 2.闭包 匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数.声明:本节内容需要有面向对象和少量设计模式基础,否则无法听懂.(所需基础15章的时候已经声明 ...

随机推荐

  1. WebSocket使用中Stomp Client连接报ERROR CODE 200的解决办法

    [转] https://www.cnblogs.com/chrischeng/p/10237523.html 最近在做一个WebSocket项目,后台使用了Stomp协议的WebSocketConfi ...

  2. CentOS 7 修改时区例如上海时区

    Linux 系统(我特指发行版, 没说内核) 下大部分软件的风格就是不会仔细去考虑向后 的兼容性, 比如你上个版本能用这种程序配置, 没准到了下一个版本, 该程序已经不见了. 比如 sysvinit ...

  3. React中的State与Props

    一.State 1.什么是 state 一个组件的显示形态可以由数据状态和外部参数决定,其中,数据状态为 state,外部参数为 props 2.state 的使用 组件初始化时,通过 this.st ...

  4. php最快测试环境建立

    win下待验证,但linux下真快. 不要nginx,不要php-fpm,就一个字,快! 1, 安装php yum install php 输出如下: Dependencies Resolved == ...

  5. 51nod 1305 Pairwise Sum and Divide

    有这样一段程序,fun会对整数数组A进行求值,其中Floor表示向下取整:   fun(A)     sum = 0     for i = 1 to A.length         for j = ...

  6. 后台将数据传回前台的三种绑定的方式(Model,Map.ModelAndView)

    //方式1:通过model 将数据绑定 @RequestMapping(value = "findByIdModel", method = RequestMethod.GET) p ...

  7. LG2662 牛场围栏 和 test20181107 数学题

    P2662 牛场围栏 题目背景 小L通过泥萌的帮助,成功解决了二叉树的修改问题,并因此写了一篇论文, 成功报送了叉院(羡慕不?).勤奋又勤思的他在研究生时期成功转系,考入了北京大学光华管理学院!毕业后 ...

  8. LightOJ - 1259 - Goldbach`s Conjecture(整数分解定理)

    链接: https://vjudge.net/problem/LightOJ-1259 题意: Goldbach's conjecture is one of the oldest unsolved ...

  9. Vue模板语法(一)

    Vue模板语法 一 vue简介 Vue.js是一套构建用户界面的渐进式框架. 与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计. Vue 的核心库只关注视图层,并且非常容易学习,非常容易与 ...

  10. git分支相关的命令

    Git 分支管理及结合gitlab的使用 说明有关gitlab的说明及基本操作,请参考:https://blog.51cto.com/wutengfei/2090253使用git分支的作用,我们先来说 ...