概述
- Dart是Google发布的开源语言
- Dart是面向对象编程语言
- Dart目前可用于全平台开发(Web开发,跨平台Flutter开发,脚本或服务端开发)
变量
- 使用var观景子进行申明,可赋予不同类型的值
'''
var a = 10;
print(a); //10
var b = "str";
print(b); //str
'''
2.未被初始化,默认值为null
'''
var c ;
print(c);//null
'''
- final申明变量只能被赋值一次
'''
final d = "yxjie";
// d=10; //编译器报错
// d="str";//编译器报错
'''
常量
使用const申明的常量,为编译期常量
'''
const a = 10 ; //不可变了
'''
数据类型(内置数据类型)
- 数值型(Number)【整型:int 浮点型:double】
数值型操作
1.运算符:+,-,*,/,~/(整除),%
2.常用属性:isNaN,isEvent (是否是偶数),isOdd(是否是奇数)等
3.常用方法:abs(),round(),toInt(),toDouble()
-
字符串(String) 注:字符串内容比较使用== 【与java或Kotlin不一样】,也是支持插值表达式的
-
布尔型 (Boolean)
-
列表 (List)
'''
//三种创建方式
var list=[1,2,3];
var list2=const[1,'yxjie',true];
var list3 = new List();
list3.add("hahah");
list3.insert(0, "yxjie");
list3.remove("yxjie");
list3.clear();
list2.forEach(print);
''' -
键值对(Map)
'''
void main(){
var map={1:"Dart",2:"Java",3:"Kotlin",4:4};
var map2=const{1:"Dart",2:"Java",3:"Kotlin",4:4};
var map3=new Map();
map3[1]="hha";
map3["2"]="lalal";
print(map3.containsKey(2));
print(map);
print(map.length);
print(map.containsKey(1));
print(map.containsValue("java"));map3.forEach(pf); }
void pf(key,value){
//差值表达式
print("key=value");
}
'''
for语句
'''
var list = [1,2,3,4];
for(var i = 0;i < list.length;i++){
print(i);
}
print('=====');
for(var item in list){
print(item);
}
'''
switch...case语句
-
比较类型:num,String,编译器常量,对象以及枚举
-
非空case必须有个break
-
default处理默认条件
-
continue跳转制定标签
'''
var language = "Kotlin";switch (language) {
D:
case "java":
print("java---");
break;case "Kotlin":
print("Kotlin---");
continue D;
default:
print("Dart");
}// 运行结果
//Kotlin---
//java---
'''
方法
方法特性
- 方法也是对象且类型为Fuction
- 返回值类型,参数类型都可省略(js类似)
- 箭头语法:=> a 是{return a},只支持一个表达式
- 方法都有返回值,如不指定,默认返回null
'''
//标准定义
void getPerson(String name,int age){
print("name=$name,age=$age");
}
// 返回值参数类型都可以省略
getPerson2(name,age){
return "name=$name,age=$age";
}
// 箭头函数
getPerson3(name,age)=>"name=$name,age=$age";
'''
可选参数
-
可选命名参数:{param1,param2,...}
-
可选位置参数:[param1,param2,...]
'''
void main(){
getPerson("Yxjie");
getPerson("yxjie",age: 27);
//输出结果
//name=Yxjie,age=null
//name=yxjie,age=2getPerson2("Jerry");
getPerson2("jerry",18);
getPerson2("Jerry",18,"boy");
//运行结果
//name=Jerry,age=null,gender=null
//name=jerry,age=18,gender=null
//name=Jerry,age=18,gender=boy
}
getPerson(name,{age}){
print("name=$name,age=$age");
}
getPerson2(name,[age,gender])=> print("name=$name,age=$age,gender=$gender"); '''
默认参数
- 使用= 给参数设置默认值(与Kotlin类似)
- 默认参数值只能是编译时常量
'''
void main(){
getPerson("yxjie");
getPerson("yxjie",age: 28);
//运行结果
//name=yxjie,age=18
//name=yxjie,age=28
}
getPerson(name,{age=18}){
print("name=$name,age=$age");
}
'''
方法对象
-
方法可作为对象赋值给其他变量
-
方法可作为参数传递给其他方法
'''
void main(){
var fun=sayHello;
fun(); //say hello!!!//方法作为参数传递给另一个方法
var list=["Java","Kotlin","Dart","Python"];
list.forEach(print);
}
sayHello()=>print("say hello!!!"); '''
匿名方法特性
-
可赋值给变量,通过变量进行调用
-
可在其他方法中直接调用
'''
void main() {
var a = (s) {
print("hello,$s");
};
a("Yxjie"); //hello,Yxjievar list = ["a", "b", "c"]; print(listAddPre(list, addPre)); //[new a, new b, new c]
print(listAddPre(list, (s) {
return s * 3;
}));//[new anew anew a, new bnew bnew b, new cnew cnew c]
}
addPre(s) => "new " + s;
listAddPre(List list, addPre(s)) {
for (var i = 0; i < list.length; i++) {
list[i] = addPre(list[i]);
}
return list;
}
'''
闭包
- 闭包是一个方法对象
- 闭包定义在其他方法内部
- 闭包能够访问外部方法局部变量,并持有他的状态
'''
void main(){
var fun=a();//与方法对象略微不一样
fun();//0
fun();//1
}
a(){ var count=0;
printCount(){
print(count++);
}
return printCount;
}
'''