void main() {
/**
* 一、内置函数
*/
print("这是一个内置函数");
print(" 这也是一个内置函数".trim());
/**
* 二、自定义函数:
* 例如 有参有返回值的方法定义规则:
* 返回类型 方法名称(参数...){
* 方法体
* return 返回值;
* };
*/
/**
*1、有参有返回值的方法
*/
int testReturnParameters(int num1, int num2) {
return num1 + num2;
}
//调用
print(testReturnParameters(1, 2));
/**
* 2、有参无返回值的方法
*/
void testNotReturn(int num1, int num2) {
print(num1 + num2);
}
//调用
testNotReturn(1, 2);
/**
* 3、无参无返回值的方法
*/
void testNotReturnNotParameters() {
print("HelloDart");
}
//调用
testNotReturnNotParameters();
/**
* 4、无参有返回值的方法
*/
int testReturn() {
return 1 + 1;
}
print(testReturn());
/**
* 5、可选参数
* 在方法体内定义[]为可选参数 可不写入
*/
Map addUser(String userName, int age, [String sex]) {
return {'userName': userName,
'age': age,
'sex': sex != null ? sex : '未知'
};
}
print(addUser('MrWang', 1));
/**
* 6、默认参数
* 在[]可选参数内直接给参数赋一个默认值 当不赋值的时候则显示默认值 就不用在方法体内进行判断 更简单便捷!
*/
Map addUser2(String userName, int age, [String sex = '未知']) {
return {'userName': userName, 'age': age, 'sex': sex};
};
print(addUser2('MrWang', 2));
/**
* 7、命名参数 赋值方法不一样 其他都一样
*/
Map addUser3(String userName, {int age,String sex = '未知'}) {
return {'userName': userName, 'age': age, 'sex': sex};
};
print(addUser3('MrWang',age: 3,sex: '男'));
/**
* 8、方法当做参数调用
*/
//(1)先定义了一个function1的方法 输出一句话
void function1(){
print("function1");
}
//(2)又定义了一个function2的方法 调用function1的方法
void function2(function1){
function1();
}
//(3)调用function2的方法 将function1的方法当做参数传进去
function2(function1);
/**
* 9、匿名函数
*/
var anonymousFunction=(){
print("This is anonymousFunction ");
};
anonymousFunction();
/**
* 10、箭头函数 类似于java8的Lambda表达式
*/
List list = ['apple','pear','banana'];
List list2 = new List();
list.forEach((value)=>print(value));
list.forEach((value)=>{
//方法体 但是只能做一件事
list2.add(value)
});
print(list2);
/**
* 11、自执行函数
*/
(String str){
print("自执行方法 "+str);
}('这是参数体');
/**
* 12、递归函数
* 求1-100的和
*/
var sum = 0;
fun(n){
sum+=n;
if(n==100){
return;
}
fun(n+1);
};
fun(1);
print(sum);
/**
* 13、闭包 在方法体内再定义一个方法 不会污染全局 而且变量常驻内存。
*/
closure(int sum){
return (){
print(sum++);
};
}
var a = closure(2);
a();
a();
}