Dart语法问答到实践

avatar
作者
猴君
阅读量:3

语法问答

  1. Dart语法输出调试信息的方法叫?

    print

  2. Dart语言里定义抽象类的关键字是?

    abstract

  3. Dart语言里String转Int的方法是?

    int.parse

  4. Dart语言的数据类型String是首字母大写,而int是首字母小写?

    受c/c++和java的影响,区分简单类型和引用类型,字符串是引用类型,是一个类的实例(类的命名规范是大写开头);int是简单类型。

知识要点

  • 基本数据类型
  • 类型判断,类型转换,级联操作
  • 集合类型
    • List
    • Set
    • Map
  • 函数的定义
    • 可选参数
    • 命名参数
    • 箭头函数
    • 异步async,await,Future类型
    • 构造函数
    • 内部,外部定义,静态
    • extends,implement,with
  • 外部库,内置库
  • 库的重命名,部分导入

基本语法

  1. Dart的特点

    Dart非常注重语义化

    Dart使用严格的分号

  2. Dart的基本数据类型

    数据类型:int、double、num

    字符串:String

    布尔:bool

    数组:List

    字典:Map

  3. Dart的常量类型,自动类型推断

    var:可以有多次赋值

    const: 只能在定义的时候赋值

    final:有且只有一次赋值机会的常量类型

  4. Dart的相关符号使用

    int.parse || double.parse:类型转换

    +:字符串拼接

    ${} || $:定义字符串的表达式

    “”" “”":定义多行字符串

    is:类型判断

    .runtimeType:类型获取(获取运行时的类型)

  5. Dart的List常用方法

    .add():只能添加一个元素

    .addAll():基于一个iterable类,两个数组合并,类似JavaScript的数组.concat方法

    .first:取第一个元素

    .lastt:取最后一个元素

    .shuffle():打乱原数组

    .retainWhere(()=>{}):根据条件保留

    .removeWhere(()=>{}):根据条件移除

    .removeRange(start,end):范围移除

    .remove():移除某个元素

    .removeAt():移除某个下标的元素

    .removeLast():移除末尾元素

    .fillRange(start,end,value):从start到end每个元素用value替换

    .insert(index,value):在某个下标插入一个元素

    .inser(index,list):在某个下标插入一个数组

    .setAll(index,list):从inde开发,逐个替换list中的元素

    .toList(growable:false):生成一个新数组,growable未false是一个固定长度,默认为true

    .join():所有元素连接成一个字符串

    .split():使用指定的分隔符字符串将一个String对象分割成子字符串数组

    .map():遍历现有的List的每个元素,并做处理,返回一个新得Iterable

    .reversed:获取反向的Iterable

    .take(count):从0开始取count个元素,并返回结果

    .takeWhile((e)=>(bool)):从0开始取,直至第一个不符合函数的元素,将其前面的元素都返回

    clear():清除所有值

  6. Dart的判断方法

    .contains():是否包含元素,包含为true,不包含为false

    .where(()=>{}):返回全部符合条件的元素

    .any((()=>{})):只要符合条件就返回true

    .every((()=>{})):只要不符合条件就返回false

  7. Dart的查找方法

    .forEach(()=>{}):遍历所有元素

    .firstWhere(()=>{}):返回第一个满足条件的元素(不是元素的inde)

    .laseWhere(()=>{}):从后往前找,返回第一个满足条件的元素(不是元素的inde)

    .indexWhere(()=>{}):返回第一个满足条件的元素的index

    .laseIndexWhere(()=>{}):从后往前找,返回第一个满足条件的元素的index

  8. Dart的类型转换

    .toSet():转为Set

    .asMap():转为Map

    .toList():转为List

    .toString():转为String

    int.parse():转为int

    double.parse():转为double

  9. Dart的Map的常用属性和方法

    注意:Map的key默认是字符串

    常用属性:

    ​ keys:获取所有的key的值

    ​ values:获取所有的value的值

    ​ isEmpty:判断字典是否为空

    ​ isNotEmpty:判断字典是否不为空

    常用方法:

    ​ remove(key):删除指定key的数据

    ​ addAll({…}):合并映射,给映射内增加属性

    ​ containsValue:查看映射内的值,返回true/false

    ​ update(key,()=>{}):根据指定的key对应的value做出修改,同时Map本身也会被修改

    ​ updateAll(()=>{}):根据参数内的函数修改Map

    ​ forEach:遍历Map,遍历时不可add或者remove

    ​ map:遍历每个键值对,根据参数函数对key,value做出修改,转换成其他泛型Map

    // eg Map<String,int> mapOne = {'a':1,'b':2}; Map<int,String> mapTwo = mapOne.map((key,value){     return MapEntry(value,key); }) 

    ​ clear():清除所有键值对

    ​ .where(()=>{}):返回全部符合条件的元素

    ​ .any((()=>{})):只要符合条件就返回true

    ​ .every((()=>{})):只要不符合条件就返回false

  10. Dart的函数定义

    1)参数

    // 1.参数 func(name) // 2.强制类型 func(String name) // 3.默认值 func(String name = "name") // 4.可选参数 func(name,[age,gender]) // 5.命名参数 func(name,{age,gender}) 

    2)箭头函数:和JavaScript不一样,Dart的箭头函数只能写一“行”(严谨说法:只能写一个表达式)

    3)自执行方法:((){})();

    4)异步:async,await(Future类型)

    bar() async{     return "hello"; } // 1.形式1 foo1() async{     String value = await bar();     print(value); } // 2.形式2 foo2() {     return Future(bar).then((value)=>print(value)); }  
  11. Dart的类(class)

    1)默认成员是public,加_变为私有(同一个文件可以访问,不同文件不可以访问)

    2)构造函数,初始化构造

    3)静态方法和静态属性

    ​ 非静态方法可以访问静态或非静态成员

    ​ 静态方法只可以访问静态成员

    4)…:连缀操作

    Person p = new Person(); // 加分号即为结束 p..name="name"  ..age=12; 

    5)抽象abstract

    ​ 抽象类通过abstract关键字来定义

    ​ 抽象类中不实现的方法体就叫抽象方法

    ​ 抽象类不能被new(实例化),只有继承或实现它的子类可以实例

    用法:

    ​ 复用抽象类的方法,并且希望用抽象方法约束子类实现,那就用extends

    ​ 只是把抽象类当标准,那就用implements

    ​ 注意先后顺序:extends->mixins->implements

    6)继承extends

    ​ 继承抽象类,则必须实现抽象类中的抽象方法

    7)混入with(mixins)

    ​ 作为混入的类只能继承自Object

    ​ 没有构造函数

    ​ 可以混入多个,如果有相同方法,后者会替换前者

    8)实现implements

    ​ 实现抽象类,则必须实现抽象类的所有属性和方法

  12. Dart的文件引入

    show:部分导入

    hide:部分不导入

  13. Dart的库

    内置库

    import "package:flutter/material.dart"; import "dart/math"; 

    外部库

    https://pub.dev/packages https://pub.dartlang.org/flutter 

    自定义库

实践

题目:实现⼀个抽象类Vehicle,定义数值⻋轮wheels,定义抽象⽅法 getWheelsNum。实现⼀个汽⻋类继承⾃Vehicle。新建汽⻋实例调 ⽤getWheelsNum打印⽇志wheels数值。

abstract class Vehicle {   int wheels = 0;   getWheelsNum(); }  class Car extends Vehicle {      getWheelsNum() {     print(wheels);   } }  main() {   Car car = new Car();   car.getWheelsNum(); } 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!