/*
内置方法/函数: 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. linux 非root用户安装nginx

    第一步:首先下载依赖包 下载地址 pcre(www.pcre.org),zlib(www.zlib.org),openssl(www.openssl.org) 第二步:上传那个nginx的安装包 下载 ...

  2. Java volatile关键字实现原理

    场景引入 可见性问题 先来看一张图: 上面的图,是简化版的Java内存模型,一个线程有自己的工作内存,同时还有一个共享的主内存. 线程1和线程2读取数据data时,先从主内存里加载data变量的值到工 ...

  3. SVM: 直观上理解大间距分类器

    在SVM中,增加安全的间距因子 那么增加了这个间距因子后,会出现什么样的结果呢,我们将C设置为很大(C=100000) SVM决策边界 当我们将C设置得很大进,要想SVM的cost function最 ...

  4. 从GITHUB下载源码

    从昨天开始就想着从GitHub上下载一个开源的Vue的实战项目,希望能从中学习更多的Vue的实用内容,结果搞了半天好不容易下载了,不知道怎么弄.然而,今天终于成功了,激动地我赶紧来记录一下. 如何从G ...

  5. to_excel

    Signature: df.to_excel( ['excel_writer', "sheet_name='Sheet1'", "na_rep=''", 'fl ...

  6. python - ORM 查询

    1. 正常查询: ## 效率低,因为每次查询都是查询表和关联表的所有数据 ret = User.objects.all() for item in ret: print(item.name,item. ...

  7. 项目兼容ie8技术要点

    好久没有写博客了,因为最近公司项目要调ie8兼容,一直在忙这事,终于竣工了,跟大家分享下这老掉牙的浏览器是如何搞定的...本人新手一枚,欢迎大家指教 项目是使用的jeecg框架,后台使用的java,前 ...

  8. PHP流程控制之for循环控制语句

    王同学反复往返与北京和大连,并且在本上记录往返次数.在PHP中还有另外一种实现方式能够实现同样的计数.无锡大理石测量平台 for 循环是 PHP 中的一种计数型循环,它的语法比较数活多变.这是一个必须 ...

  9. Oracle ALERT日志中常见监听相关报错之二:ORA-3136错误的排查 (转载)

    近期在多个大型系统中遇到此问题,一般来说如果客户端未反映异常的话可以忽略的.如果是客户端登陆时遇到ORA-12170: TNS:Connect timeout occurred,可以参考 http:/ ...

  10. tar归档压缩命令和zip归档 和7zip压缩命令;库文件归档ar命令

    第一.tar 归档 tar -c 创建归档文件包 tar -x 释放归档文件包 tar -t 查看归档文件包 tar -v 显示归档包操作过程信息 tar -f 指定归档文件名 案例1:归档 /hom ...