1 命名函数
void printInfo(string name ,{string sex, int age})
{
if(sex!=null||age!=null)
print(name+sex+age);
else
print(name);
}
void main()
{
printInfo("张鑫");
printInfo("张鑫",sex:‘男’);
printInfo("张鑫",sex:‘男’,age=22);
}
2 箭头函数
List gg = [1, 2];
gg.forEach((item) {
print(item);
});
//上下是等价的操作
gg.forEach((item) => print(item));
箭头函数只能有一行,可以省略大括号
var g2 = gg.map((item) {
return item % 2 == 0 ? item * 2 : item;
});
print(g2.toList());
//通过三元运算符来进行操作
var g3= gg.map((item) => item % 2 == 0 ? item * 2 : item);
print(g3);
箭头函数主要用于在集合的遍历过程中。
3 闭包
1 有全局变量 --长期会在内存中
2 局部变量 – 有垃圾回收机制回收
使用闭包可以达到两者的效果
fn()
{
var a=1;
return ()
{
a++;
print(a)
}
}
b=fn()
b();
b();
b();
这样就可以使用a的值。
4 类的私有属性
在定义个一个类中
class person ()
{
String name;
String _name;//私有属性,外部不能进行访问
int age;
getName()
{
print(this.name)--this.age));
}
}
5 Set 和Get设置
在类中对于私有变量,提供结构,不同于java setter 和 getter 方法
set/*(这是一个关键字) */setName (Sring name)
{
this.name=name;
}
//调用如下
p.setname(name);
//同样的对于get是一样的
get/*(这是一个关键字)*/ getName ()
{
print(this.name);
}
6 对象操作符
?判断对象是否为空,为空就会报错。
p?p.print();
as 类型转换
var p1='';
p1=new person();
//(p1 as Person ).printInfo();
//这样就可以使用
p1.printInfo();
//新版本可以实现自动转换
级联操作
…(两个点) ,类似于java中的箭头,对于同一个对象。
举例
Person p =new Person();
p.name=" 小王";
p.age=20;
p.printInfo();
//转换如下
p .. name="小王"
..age=20//这里不用加分号
..printInfo();