注:本文仅记录一些和java语法不甚相同或较难理解部分,方便个人的查找和学习
1.在 Dart
中有两个比较特殊的运算符。
- 赋值运算符
??=
- 条件运算符
??
void operatorTest(){
// dart中的运算符
/*
* 赋值运算符 ??=
* 条件运算符 ??
*
*/
//举例
var a;
a ??= 10;//当a没有值的时候就赋值 10
print(a);
a ??= 5;
print(a);
a ??= 1;
print(a);
}
代码运行结果
- 条件运算符 ??
void operatorTest(){
// dart中的运算符
/*
* 条件运算符 ??
*/
var a;
a ??= 10;//当a没有值的时候就赋值 10
var b ;
b = 5;
print(b ?? a);// ??当左边有值就返回左边,否则返回右边
代码运行结果
2.Dart中的箭头函数
void main(){
functionTest();
}
void functionTest() {
print(sum(10, 10));
}
// 求和方法
int sum (int a,int b){
return a +b ;
}
返回值和参数类型可以省略。那么变形如下:
// 求和方法
sum (a,b) => a +b ;
我个人理解为将大括号和return省略 由"=>"代替
3.Dart中的可选参数
Dart中可选参数类型分为两种
- 由大括号{}包围
特点:实现方法时,可以指定具体传递某一个参数。
与python中关键字传参类似,位置可以不必须保持一致- 由中括号 [ ] 包围
特点,多个可选参数时,默认按照前后顺序传递。- 共同点:括号内的参数传参时均可以不传递
void main(List<String> args) {
print(getStr("xxx"));//xxx
print(getStr("xxx",12));//xxx 12
print(getPart1("大括号", pwd: "123", name: "小米")); // 顺序可以不同
}
String getStr(String name,[int age]){// 这里由[ ]括起来的参数在调用时可以不传递
if(age != null){
return "$name $age";
}else {
return name;
}
String getPart1(var a, {String name, String pwd}) {//这里由 { } 括起来的参数在调用时可以不传递
print("a=$a name=$name pwd=$pwd");
}
4.Dart中类 中无论函数还是方法都不支持重载,方法名一样,参数不同会报错。
class A{
A(){
}
A(int a){
//这个地方会报错,说A()函数已经存在
}
A.eat(){
//构造函数
}
A.sing(int food){
//构造函数
}
A.sleep(){
//构造函数
}
}