flutter上分之路3-人机练习2(dart语法

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作为前缀)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值