void main(){
int sum(int a,int b){
var e = a +b;
return e;
}
var result = sum(2, 3);
print(result); // 5
/*
bool isEven(int x){
return x%2 ==0?true:false;
}
*/
bool isEven(int x) => x%2 == 0?true:false;
print(isEven(6)); // true
// 可选命名参数
void message(String from,String content,{DateTime time,String device}){
print('来自$from,内容:$content');
if(time != null){
print('时间:$time');
}
if(device != null){
print('设备:$device');
}
}
// 可选位置参数使用[]包裹可选参数列表
// 在调用带有可选位置参数的函数时,应当按照参数的定义顺序
// 依次赋值,可选位置参数列表中,前一个参数被赋值后,后一个参数才能被赋值
message('json', 'hello'); //来自json,内容:hello
message('json', 'hello',time:DateTime.now()); //时间:2022-01-06 20:16:00.552990
message('json', 'hello',time:DateTime.now(),device: 'pc'); //时间:2022-01-06 20:16:00.555985 设备:pc
}
/* 每一个Dart应用都必须有一个main函数作为入口
main函数的返回为void,它时一个类型list<String>的
可选参数,即可以向其传递数量的参数,即可以向其传递任意数量参数
*/
void main(){
void printElement(Object element){
print(element);
}
var list = [1,"abc",true];
/*
List 集合有一个forEach方法,它的作用是遍历集合中
的每一个对象,该方法的参数是一个函数,
它会将当前遍历对象传递给函数
*/
list.forEach(printElement);
var show = printElement;
show('ele');
}
void main(){
var list = ['apple','banans','orange'];
list.forEach((Object element){
print(element);
});
Function perimeter(){
var pi = 3.14;
return (num r) => 2*pi*r;
}
var per = perimeter();
var l = per(9);
print('圆的周长:$l'); //圆的周长:56.52
}
/*
语法作用域在变量或对象定义时,就被确定了,
它的规则以{}为界限,在{}内访问它之外的对象
在它内部定义的对象不嫩被它的外部访问
*/
String topLevel = 'top variable';
void main(){
var top = topLevel;
var insideMain = 'insideMain variable';
void myFunction(){
var top = topLevel;
var main = insideMain;
void instedFunction(){
var insideFun='insdeFun';
}
}
/**
* 闭包是一个函数对象,即使函数对象的调用在它原始作用域
* 之外,依然能够在它语法作用域内的变量
*
*/
//返回一个函数
Function makeAdder(num addBy){
return (num i) => addBy +i;
}
var add2 = makeAdder(2);
var result = add2(6);
print(result); // 8
/***
* 作为参数传递的函数就是回调函数,
* 回调函数还可以接收原函数提供的值
*/
void printProgress(Function(int) callback){
for(int progress=0; progress <10;progress++ ){
callback(progress);
}
}
printProgress((int i){
print('进度$i');
});
}