//程序入口
void main(){
// ######################
// 1.变量定义
var name='hi'; //隐式定义,可随时修改类型
String names="bruce"; //显示定义
dynamic value=18; //变量不限于某种单个类型
print("value=$value");
value="nana";
print("value=$value");
// 1.1 常量
// 用final或const修饰,只能被设置一次
Person p=Person("bruce");
print("p.name=${p.name}");
// 1.2 内置类型
// int、double、bool、String
List arr=["Bruce","Nick","John"];
print("arr=$arr");
Map map={
"name":"bruce",
"high":1.8
};
print("map=${map['name']}");
// 表示表情的符文
String smile="\u{1f600}";
print("微笑:$smile");
// ######################
// 2.函数
// 2.1对于只有一行的函数声明
bool isNoble(int atomicNumber)=>atomicNumber==1;
void printTest(){
print('hh');
}
// 2.2 函数作为参数传递
void execute(var callback){
callback();
}
execute(printTest);
// 2.3 制定命名参数列表
void enableFlags({int inter,bool bold}){
print("inter:$inter bold:$bold");
}
enableFlags(bold:true,inter:100);
// 2.4 使用[]来表示可选参数
void showDesc(var name,[var age]){
print("name=$name");
if(age!=null){
print("age=$age");
}
}
showDesc("liz");
// 可选参数设置默认值
void showDetail(var name,[var age=19]){
print("name=$name");
if(age!=null){
print("age=$age");
}
}
showDetail("tony");
// 2.5 函数作为参数
void println(String name){
print("name=$name");
}
void showSomething(var name,Function log){
log(name);
}
showSomething("harry",println);
// 2.6 匿名函数
// (参数){方法};
showSomething("taylor",(name){
print("name=$name");
});
// 2.7 嵌套函数
void showNestFunc(var name){
print("this is a nested function.");
void println(var name){
print("name=$name");
}
println(name);
}
showNestFunc("swift");
// ######################
// 3.异步支持
// 3.1在Future.delayed中执行耗时操作
Future.delayed(new Duration(seconds:2),(){
return "hi world!";
}).then((data){ //在then中接收异步结果并处理
print(data);
}).catchError((e){ //执行失败会进入此处
print(e);
}).whenComplete((){ //无论失败与否都会走到这里
});
// 3.2 Future.wait用于等待多个耗时任务的执行
Future.wait([
Future.delayed(new Duration(seconds:2),(){
return "hello ";
}),
Future.delayed(new Duration(seconds:4),(){
return "world";
})
]).then((results){
print(results[0]+results[1]);
}).catchError((e){
print(e);
});
运算符
![](https://img.haomeiwen.com/i1841914/15b56b7d0fdb9cb4.png)
image.png
![](https://img.haomeiwen.com/i1841914/a35a4ef13518c756.png)
image.png
- ~/:除以之后向下取整
- ?. : p ?. XX :判断p是否是null,若是则为null;不是则返回p.XX的值
// ######################
// 4.运算符
// p ?. XX :判断p是否是null,若是则为null;不是则返回p.XX的值
People pp=People("kk");
var n=pp?.name;
print("name=$n");
// as 用于做类型转换
dynamic b=Banana(20);
(b as Banana).weight=30;
print("b.weight=${(b as Banana).weight}");
// is 用于类型判断
print(b is Banana);
// ?? 为null则赋值
String ano;
String nickName=ano??"nick";
print("nickname=$nickName");
// ..的使用,允许对同一对象进行一系列操作
Orange ora=Orange(18,"red")..showColor()..showWeight();
// // ######################
// // 5.类
// 构造函数
Tree t=Tree.init();
print("${t.desc}");
Tree tt=Tree("this is a tree");
print("${tt.desc}");
// 构造函数的继承
Apple();
Apple.desc("say hello");
// // ######################
// // 6.泛型
AnimalFactory<Dog> f1=AnimalFactory<Dog>();
Dog d=f1.produceAnimal(Dog("a dog"));
d.log();
AnimalFactory<Cat> f2=AnimalFactory<Cat>();
Cat c=f2.produceAnimal(Cat("a cat"));
c.log();
}
class Dog{
var desc;
Dog(this.desc);
void log(){
print("${this.desc}");
}
}
class Cat{
var desc;
Cat(this.desc);
void log(){
print("${this.desc}");
}
}
class AnimalFactory<T>{
T produceAnimal(T t){
return t;
}
}
class Fruit{
Fruit(){
print("this is Fruit constructor with no param.");
}
Fruit.desc(var desc){
print("$desc in Fruit");
}
}
class Apple extends Fruit{
// 继承父类的无参构造
Apple():super(){
print("this is apple constructor with no para");
}
// 默认继承父类的无参构造
Apple.desc(var desc){
print("$desc in Apple");
}
}
class Tree{
var desc;
// 命名构造函数
Tree.init(){
desc="this is a seed";
}
// 函数运行之前初始化实例变量
Tree(var des):desc=des;
}
class Orange{
var weight;
var color;
Orange(this.weight,this.color);
void showWeight(){
print("weight=$weight");
}
void showColor(){
print("color=$color");
}
}
class Banana{
var weight;
Banana(this.weight);
}
class People{
var name;
People(this.name);
}
class Person
{
static const desc="this is person class.";
final name;
Person(this.name);
}
网友评论