Dart语法问答到实践

news/2024/8/26 18:08:59 标签: windows, 前端, flutter

语法问答

  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();
}

http://www.niftyadmin.cn/n/5558319.html

相关文章

蓝桥杯14小白月赛题解

直接输出pi/ti,for遍历 #include <iostream> using namespace std; #define int long long int a,b,c ; double t1.00; signed main() {cin>>a;int an0;for(int i1;i<a;i){cin>>b>>c;if(t>c*1.00/b){tc*1.00/b;ani;} }cout<<an<<e…

导航专业入门,高考/考研假期预习指南

导航专业入门&#xff0c;高考/考研假期预习指南 七月来临&#xff0c;各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束&#xff0c;而是新旅程的开始。对于有志于踏入IT领域的高考少年们&#xff0c;这个假期是开启探索IT世界的绝佳时机。作为该领域的前行者和经验…

swiper插件轮播图使用方法(保姆级)

一、swiper下载 swiper官网 可以按自己的需求来下载 一般都是下载最新版本 二、swiper使用方法 1. 解压找到这两个文件&#xff0c;放到vscode对应的文件夹里面&#xff0c;记得在代码中应用这两个文件(我使用的是vscode) 这些轮播图样式都可以自己选择 也可以在官网的在线演…

ArkUI组件——循环控制/List

循环控制 class Item{name: stringprice:number}private items:Array<Item> [new Item("A0",2399),new Item("BE",1999),new Item("Ro",2799)] ForEach(this.items,(item:Item) > {})List组件 列表List是一种复杂的容器&#xff0c;…

字典树实现

一、字典树 字典树&#xff08;Trie树&#xff09;是一种多叉树结构&#xff0c;每条边代表一个字符&#xff0c;从根节点到其它节点的路径构成一个单词。其具有较好的查询性能&#xff0c;可以用于有效地存储大量字符串&#xff0c;并支持高效的查找、插入和删除操作。 二、…

Python项目部署到Linux生产环境(uwsgi+python+flask+nginx服务器)

1.安装python 我这里是3.9.5版本 安装依赖&#xff1a; yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y 根据自己的需要下载对应的python版本&#xff1a; cd local wget https://www.python.org/ftp…

YOLO--置信度(超详细解读)

YOLO&#xff08;You Only Look Once&#xff09;算法中的置信度&#xff08;Confidence&#xff09;是一个关键概念&#xff0c;用于评估模型对预测框内存在目标对象的信心程度以及预测框对目标对象位置的准确性。 一、置信度的定义 数值范围&#xff1a;置信度是一个介于0和…

数学基础【俗说矩阵】:齐次线性方程和非齐次线性方程求解-学习笔记

一、矩阵基础知识 二元一次方程的传统解法 不论是代入消元法还是加减消元法都统称 【高斯消元法】。 齐次方程组和非齐次方程组 线性方程组的解 线性方程的向量展示 向量规则 矩阵的高斯消元和初等行变行及其规则 高斯消元规则 初等行变换 矩阵经初等行变换成阶梯矩阵&…