flutter上分之路-人机练习2(dart语法
这篇文章主要展示一些简单、常用的语法,用dart是如何写的
直接上代码吧
《Student.dart》
//一个文件可以包含多各类
///学生基类
abstract class _BaseStudent {
///学生姓名
String name;
///学生年龄
int age;
/*
//JAVA写法
Student(String name, int age) {
this.name = name;
this.age = age;
}*/
_BaseStudent(this.name, this.age);
///自定义构造函数 名称和参数
_BaseStudent.onlyName(this.name);
}
///学生接口
class IStudent {
///考试
int examine(int chiness, int math, int english) {
//可以有默认值
return 0;
}
}
//学生实体类
class Student extends _BaseStudent implements IStudent {
int total;
Student(String name, int age) : super(name, age);
Student.name(String name) : super.onlyName(name);
@override
int examine(int chiness, int math, int english) {
//返回总分
total = chiness + math + english;
// ~/ 除法取整 (商数)
return total ~/ 3;
}
@override
String toString() {
return "$name / $age / $total";
}
}
《Main.dart》
import './bean/Student.dart';
import 'dart:math';
void main() {
Student student1 = Student("李白", 30);
Student student2 = Student("杜甫", 20);
//单引号和双引号是一样的用法
//直接生成一个list
List staudentsList = [student1, student2];
print('''------现有学生
$staudentsList ''');
var newStaudents = ['王安石', '柳宗元', '杜牧'];
print('''------插班生
$newStaudents ''');
for (var names in newStaudents) {
Student student = Student.name(names);
staudentsList.add(student);
}
print('''------现有学生
$staudentsList ''');
//直接生成一个map
var tags = {
'优秀': 270,
'良好': 240,
"及格": 180
};
print('------ 评分标准 $tags ');
print('------ 期中考试开始 ');
staudentsList.forEach((s) => examine(s));
print('------ 考试排名 ');
staudentsList.sort((a, b) {
return b.total - a.total;
});
staudentsList.forEach(print);
print('------ 及格的同学 ');
staudentsList.where((student) {
return student.total > 180;
})
.forEach(print);
// .forEach((student) => print(student.name));
}
bool examine(Student student) {
print('------ ${student.name} 开始考试 ');
int chiness = Random().nextInt(100);
int math = Random().nextInt(100);
int english = Random().nextInt(100);
//换行字符串用三个单引号或双引号
print('''------考试成绩:
[语文:$chiness , 数学:$math , 英语:$english]''');
print('------平均分:${student.examine(chiness, math, english)}');
bool res = chiness > 10 && math > 10 && english > 10;
if (res) {
print('${student.name} 考试完成 ');
} else {
print('${student.name} 考试未达到最低分 赶出去! ');
}
return res;
}
稍微总结一下
1.支持var定义变量,但是我依然觉得显式的定义出变量的类型比较好。
2.方法也能作为参数使用,可以看成方法也是一个变量。
3.一个文件可以包含多个平级的class。不像java那样只能定义一个类,再去定义若干内部类。
4.直接用tag的方式进行打印,简单易用。
5.木有接口关键字interface,直接使用class,注意使用命名规则进行区分(常规是大写I作为前缀)