本文已参与「新人创作礼」活动,一起开启掘金创作之路。
Dart 闭包
闭包:
- 全局变量特点: 全局变量常驻内存
- 局部变量的特点: 不常驻内存会被垃圾机制回收、不会污染全局
想实现的功能:
- 常驻内存
- 不污染全局
闭包: 函数嵌套函数,内部函数会调用外部函数的变量或参数,变量或参数不会被系统回收(不会释放内存)
闭包的写法: 函数嵌套函数,并return里面的函数,这样就形成了闭包
// 全局变量
var a = 123;
void main() {
print(a); // 123
fn() {
a++;
print(a);
}
fn(); // 124
fn(); // 125
fn(); // 126
printInfo() {
// 局部变量
var num = 123;
num++;
print(num);
}
printInfo(); // 124
printInfo(); // 124
printInfo(); // 124
// 闭包
fn() {
var a = 123;
return () {
a++;
print(a);
};
}
var b = fn();
b(); // 124
b(); // 125
b(); // 126
}
Dart 面向对象的介绍 以及Dart内置对象
面向对象编程(OOP)的三个基本特征是:封装、继承、多态
- 封装:封装是对象和类概念的主要特性。封装,把客观事物封装成抽象的类,并且把自己的部分属性和方法提供给其他对象调用, 而一部分属性和方法则隐藏。
- 继承:面向对象编程 (OOP) 语言的一个主要功能就是“继承”。继承是指这样一种能力:它可以使用现有类的功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。
- 多态:允许将子类类型的指针赋值给父类类型的指针, 同一个函数调用会有不同的执行效
Dart所有的东西都是对象,所有的对象都继承自Object类。
Dart是一门使用类和单继承的面向对象语言,所有的对象都是类的实例,并且所有的类都是Object的子类
一个类通常由属性和方法组成。
void main() {
// List list=new List(); //最新版本的dart中已没法使用
// list.isEmpty;
// list.add('香蕉');
// list.add('香蕉1');
Map m = new Map();
m["username"] = "张三";
m.addAll({"age": 20});
m.isEmpty;
print(m); // {username: 张三, age: 20}
Object a = 123;
Object v = true;
print(a); // 123
print(v); // true
}