/*
内置方法/函数: 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. Dubbo源码分析:Dubbo协议解码

    Dubbo协议解码时序图

  2. Requset作用域

    案例:当登陆密码或账号不正确时 提示 使用Requset对象中的作用域存储数据 语法:req.setAttribute(key, value);//键值对存在 当密码不存在时,设置作用域 else { ...

  3. learning java 访问文件和目录

    import java.io.File; import java.io.IOException; public class FileTest { public static void main(Str ...

  4. windows api多线程

    windows api多线程  原文地址:https://www.cnblogs.com/flowingwind/p/8452693.html 线程是程序中一个单一的顺序控制流程.在单个程序中同时运行 ...

  5. HTML5类操作

    一.获取DOM的方式 ①通过类名获取元素,以伪数组形式存在 document.getElementsByClassName("class"); ②通过css选择器获取元素,符合匹配 ...

  6. 定位的盒子叠放顺序z-index

    1.正常情况,按照顺序,最后的盒子在最上面,默认z-index为02.当使用z-index,数字越大,越优先显示在上面3.注意,只要定位的盒子才可以使用该方法 <body> <div ...

  7. (9)打鸡儿教你Vue.js

    样式绑定 设置元素的样式 用 v-bind 来设置样式属性 class 与 style 是 HTML 元素的属性 <div v-bind:class="{ active: isActi ...

  8. 64位内核第三讲,Windbg的使用.以及命令

    目录 一丶驱动的调试. 1.线程 2.断点 3.内存查看命令 4.修改内存命令 5.栈相关操作命令 6.进程线程命令(内核命令) 一丶驱动的调试. 编写驱动免不了调试.所以这里介绍一下WinDbg的常 ...

  9. Bat 复制本地文件到共享目录

    @echo off title "copy UI" net use \\172.16.104.93\心电图 "password" /user:"adm ...

  10. ICEM-模型导入失败的解决方法

    原视频下载地址:https://yunpan.cn/cxITx5uXY6dAp  访问密码 ade8