Dart语法问答到实践

语法问答

  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.mzph.cn/pingmian/47048.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Office动态水印终于来了

在信息安全日益重要的今天&#xff0c;保护敏感信息变得尤为关键。目前&#xff0c;动态水印甚至是盲水印技术已经在各种企业软件中广泛应用&#xff0c;常见的钉钉和企业微信等都已经支持此类技术&#xff0c;用户查看消息时画面会显示对应用户的姓名和工号等&#xff0c;而作…

小程序-视图与逻辑

一、页面导航 声明式导航 编程式导航 导航传参 1.声明式导航传参 2.编程式导航传参 3.在onload中接收导航参数 二、页面事件 下拉刷新 上拉触底 三、生命周期 分类 生命周期函数分类 1.应用的生命周期函数 2.页面的生命周期函数 四、WXS脚本 基础语法 wxs的特点 五、案…

Matlab学习笔记01 - 基本数据类型

Matlab学习笔记01 - 基本数据类型 1、数据类型转换2、矩阵2.1 访问单个矩阵元素2.2 访问多个矩阵元素2.3 矩阵转置 3、字符与字符串4、数值与字符串5、元胞数组 1、数据类型转换 十进制转十六进制字符串‘FF’ >> hex2dec(3ff)ans 1023十进制转十六进制字符串 >>…

几何相关计算

目录 一、 判断两个矩形是否相交 二、判断两条线段是否相交 三、判断点是否在多边形内 四、垂足计算 五、贝塞尔曲线 六、坐标系 一、 判断两个矩形是否相交 当矩形1的最大值比矩形2的最小值都小&#xff0c;那矩形1和矩形2一定不相交&#xff0c;其他同理。 struct Po…

GaussDB数据库使用gs_loader导入数据

1、创建用户并授予使用权限 CREATE USER gsloader WTH PASSWORD Gsloader14; GRANT ALL ON FUNCTlON copy_error_log_create() TO gsloader; GRANT ALL ON SCHEMA public To gsloader; SELECT copy_error_log_create(); SELECT copy_summary_create(); GRANT ALL FRIVILEGES ON…

阐述软件23种设计模式背后的图论和代数结构基础

软件设计模式是一套被广泛认可的解决特定设计问题的解决方案,它们在软件开发中被重复使用。虽然设计模式本身并不直接依赖于图论或代数结构,但这些数学概念为理解和实现某些设计模式提供了理论基础。以下是一些设计模式以及它们可能与图论和代数结构相关的方面: 1. **策略模…

华为OD 机试真题 - 分割均衡字符串(Python)

题目描述 均衡串定义:字符串只包含两种字符&#xff0c;且两种字符的个数相同。 给定一个均衡字符串&#xff0c;请给出可分割成新的均衡子串的最大个数。 约定字符串中只包含大写的’X"和’Y’两种字符。 输入描述 均衡串:XXYYXY 字符串的长度[2,10000]。给定的字符…

keepalive简单配置

一、keepalive相关知识 1.1 keepalive介绍 keepalive即LVS集群当中的高可用架构&#xff0c;只是针对调度器的高可用。是高可用的HA架构。 keepalive就是基于VRRP协议来实现LVS高可用的方案。 组播地址 224.0.0.18&#xff0c;根据组播地址进行通信&#xff0c;主备之间发送…

10.1 标注、注记图层和注记整体说明

文章目录 前言标注、注记图层和注记QGis中的标注QGis中的注释(Annotation)图层QGis中的注记 总结 前言 介绍标注、注记图层和注记说明&#xff1a;文章中的示例代码均来自开源项目qgis_cpp_api_apps 标注、注记图层和注记 有时地图需要使用一些文字信息说明其中的地理要素或其…

OSX MongoDB 安装与配置指南

OSX MongoDB 安装与配置指南 MongoDB 是一款流行的开源 NoSQL 数据库,广泛用于数据存储、索引和实时分析。本指南将详细介绍在 macOS(OSX)操作系统上安装和配置 MongoDB 的步骤。 1. 安装 MongoDB 1.1 使用 Homebrew 安装 Homebrew 是 macOS 上的包管理器,可以简化软件…

如何落地实际场景,解决跨境传输共性需求?免费白皮书可下载

在全球化的背景下&#xff0c;海外市场对于数据驱动的产品和服务的需求不断增加&#xff0c;各行业数据跨境传输也日趋频繁&#xff0c;在这种前景下&#xff0c;越来越多的企业寻求更深度的跨国业务及合作&#xff0c;因此&#xff0c;企业数据跨境流动也成为了势不可挡的趋势…

51单片机嵌入式开发:11、 STC89C52RC 实现一个滑动的led点阵程序

STC89C52RC 实现一个滑动的led点阵程序 1 概述2 LED点阵介绍2.1 LED概述2.2 LED点阵注意事项 3 LED点阵原理3.1 Led点阵内部电路3.2 原理图电路 4 软件实现点阵图案的滑动4.1 软件工程代码4.2 Protues仿真 5 扩展74HC595&#xff08;后续专题开展&#xff09;6 总结 第十一节 1…

如何制定高效的媒体公关解决方案

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 媒体公关解决方案是指企业或组织为提升品牌形象、塑造公众认知、应对危机事件等目的&#xff0c;通过媒体渠道制定并实施的一系列公关策略和行动计划。这一解决方案旨在通过有效的媒体沟…

【信息系统项目管理师】高项论文开头/过度/结尾

文章目录 开头过度结尾 概要叙述你参与管理的信息系统项目&#xff08;项目的背景、项目规模、发起单位、目的、项目内容、组织结构、项目周期、交付的成果等&#xff09;&#xff0c;并说明你在其中承担的工作&#xff08;项目背景要求本人真实经历&#xff0c;不得抄袭及杜撰…

socket功能定义和一般模型

1. socket的功能定义 socket是为了使两个应用程序间进行数据交换而存在的一种技术&#xff0c;不仅可以使同一个主机上两个应用程序间可以交换数据&#xff0c;而且可以使网络上的不同主机间上的应用程序间进行通信。 2. 图解socket的服务端/客户端模型

深度解析PHP8 JIT技术:如何助力网站性能飞跃

本文由 ChatMoney团队出品 在Web开发领域&#xff0c;提高网站的响应速度一直是开发者和企业所追求的目标。随着技术的不断进步&#xff0c;PHP8的发布为我们带来了一个全新的工具——JIT&#xff08;Just-In-Time&#xff09;加速器&#xff0c;它以其独特的优势&#xff0c;成…

AngularJS 输入验证

AngularJS 输入验证 AngularJS 是一个强大的前端框架,它允许开发者轻松构建复杂的单页应用程序。在处理用户输入时,确保数据的准确性和完整性是非常重要的。AngularJS 提供了一套内置的输入验证机制,可以帮助开发者实现这一目标。本文将详细介绍 AngularJS 的输入验证功能,…

广告投放的智能优化:Kompas.ai如何提高广告效果

在数字广告领域&#xff0c;智能优化已成为提升广告投放效果和投资回报率(ROI)的关键。Kompas.ai&#xff0c;一款先进的广告智能优化工具&#xff0c;利用数据分析和机器学习技术&#xff0c;帮助广告主实现更精准、高效的广告投放。 智能优化在提升广告效果中的作用 智能优化…

30.【C语言】详解printf

1.printf&#xff08;print formate&#xff09;输入函数 01.简单使用 调用前要引用头文件 #include <stdio.h> printf("abc"); 默认情况下打印完光标停留在同一行 \n可以换行 printf("abc\n"); ​ printf("ab\nc"); ​ printf(…

万用表数学功能中的限值(Limits)功能

万用表数学功能中的 限值(Limits)功能 有限值功能的仪表设置上下限的使用方法 创新向上 利向未来 通达世界 限值检查是指示有多少次采样超过指定限值&#xff0c;并且还指示何时超过此限值的数学功能。 限值(Limits)功能 以34465A为例&#xff1a;可以通过[Math] - Limi…