dart基础类型与方法使用

dart基础类型与方法使用

类型及方法

  • 字符串、数字、列表、集合、映射,及列表、集合、映射相互转换
void foo() {var toly = Person('xiaoming');toly.say();var bm = toly.bmi(height: 170, weight: 60);print(bm);toly.logNumFunc(-100.5);toly.logStrFunc('你好.abdfd   ');toly.logListFun(['1']);toly.logSetFun({'0'});toly.logMapFun({'a': 1});toly.logListToSet();
}class Person {final String name; // 声明语句Person(this.name); // 方法void say() {print('我是' + this.name);// 运行时的类型print(this.name.runtimeType);}double bmi({required double height, required double weight}) {return weight / (height * height);}logNumFunc(double num) {print('abs:' + num.abs().toString());print('ceil:' + num.ceil().toString());print('floor:' + num.floor().toString());print('四舍五入round:' + num.round().toString());print('去除小数取整truncate:' + num.truncate().toString());print('四舍五入,保留几位小数toStringAsFixed:' + num.toStringAsFixed(2).toString());print('double 通过解析数据获得数字:' + double.parse(num.toString()).toString());print('int 通过解析数据获得数字:' + int.parse('10').toString());print('将十进制转为2进制:' + num.ceil().toRadixString(2).toString());}void logStrFunc(String str) {print('字符串模板:${str}');print('字符串索引值获取字符:' + str[1]);print('获取字符串长度:' + str.length.toString());print('字符串截取:' + str.substring(2));print('去掉首位空格trim():' + str.trim());print('去掉左边空格:' + str.trimLeft());print('去掉右边空格:' + str.trimRight());print('字符串小写:' + str.toLowerCase());print('字符串大写:' + str.toUpperCase());print('字符串startsWith:' + str.startsWith('1212').toString());print('字符串endsWith:' + str.endsWith('1212').toString());print('字符串contains:' + str.contains('a').toString());print('字符串replaceAll :' + str.replaceAll('a', '_A'));print('字符串split :' + str.split('').toString());}// 聚合类型:List Map Set 列表 映射 集合logListFun(List<String> list) {list.add('张三');list.addAll(['a', 'b', 'c', 'd']);list.insert(1, '88');list.insertAll(2, ['66', '77']);list.removeAt(0);list.remove('77');print('列表List新增add:|多个新增addAll:|指定位置新增insert:|指定位置多个新增insertAll|删除指定位置的值removeAt:|删除某个元素remove:' +list.toString());list[6] = '00';print('List通过索引直接修改或者访问某个值:' + list[2]);}logSetFun(Set set) {set.add('张三');set.addAll(['a', 'b', 'c', 'd']);set.remove('77');set.removeAll(['a', 'b']);set.add('0'); // 重复新增无效Set set2 = {'a', 'b', 'c', 'd'};print('集合Set没有索引值,新增add/addAll  remove/removeAll' + set.toString());print('Set交集intersection:' + set.intersection(set2).toString());print('Set补集difference:' + set.difference(set2).toString());}logMapFun(Map<String, int> map) {print('map通过key值访问,如果不存在就是添加:' + map['b'].toString());map['c'] = 3;map['d'] = 4;print('map通过remove key删除:' + map.remove('c').toString());}logListToSet() {List<String> list = ['a', 'b', 'c', 'd', 'a'];Set<String> set = list.toSet();List<String> list1 = set.toList();List<String> list3 = ['a', 'b', 'c'];Set set1 = {0, 1, 2};Map map = Map.fromIterables(set1, list3);print('通过toSet ,toList方法去重' + list1.toString());print('通过asMap将list转换为map' + list1.asMap().toString());print('Map通过fromIterables可以将set list转为map对象 ' + map.toString());print('Map的keys方法: ' + map.keys.toString());print('Map的values方法: ' + map.values.toString());print('Map的keys方法可以用toSet toList转为Set list: ' +map.values.toList().toString());}
}void main() {foo();
}

自定义异常

int test1(int num) {if (num < 100) {throw Exception("${num} is not a valid number");}return num;
}
class MyException implements Exception {final String args;MyException(this.args);String toString() => '入参${this.args}不能为空';
}void main() {try {test1(1);} on MyException catch (a) {print(a);} catch (e, s) {print('异常对象' + e.toString());print('异常追踪信息' + s.toString());} finally {print('无论是否有异常,都会执行');}print('this is a test');
}

运算符

void calculate({required int number1, required int number2}) {print('或者数字${number1} 和 数字${number2} 的商,用~/:' +(number1 ~/ number2).toString());
}void caseFun(num1, num2, param1) {print('!=两个是否相等:' + (param1 != null).toString());if (num1 > num2) {print('大于');} else if (num1 == num2) {print('等于');} else {print('小于');}
}void evalFun(a) {var b = a ??= 20; // 如果a为null,将20赋值给bprint(b);print(b &= 10);print(b |= 10);
}void main() {calculate(number1: 10, number2: 3);caseFun(1, 2, '');evalFun(null);
}

class类

class Test {double x, y; // 成员变量String? _name;Test(this.x, this.y); // 构造方法,用于对成员变量进行赋值,this.x =x; this.y =y;void add() {//成员方法print(x + y);}// get关键字,使用之后可以不加()double get area => x * y;// 等价于如下double getArea() => x * y;// set关键字,使用之后可以不加()void set name(String? value) {if (value != null) {_name = value;} else {_name = '';}print('name = ${_name}');}
}class Student {Document document;Student(this.document);void event(String string) {document.records.add(string);}String callDocument() {return document.records.join("\n");}void died() {document.records.clear();}
}class Document {List<String> records = [];void addRecord(String string) {records.add(string);}
}void main() {Test t = new Test(1, 2);t.x = 100;t.name = '3232';print(t.x);print(t.area);print(t.area);Document document = new Document();Student xiaoming = new Student(document);xiaoming.event('xiaoming2001年幼儿园');xiaoming.event('xiaoming2004年小学');xiaoming.event('xiaoming2011年初中');String res = xiaoming.callDocument();print(res);
}

抽象类

  • 继承
// 此处类 当接口用
class Vec2 {int x;int y;Vec2(this.x, this.y);
}abstract class Shape {Vec2 center;Shape(this.center);void move() {center.x += 10;center.y += 10;}void draw() {String info = '绘制矩形:中心点(${this.center.x}${this.center.y}${drawChildIn()}';print(info);}String drawChildIn();
}class Rectangle extends Shape {double height;double width;Rectangle(Vec2 center, {this.height = 10, this.width = 10}) : super(center);String drawChildIn() {return '高:${this.height},宽:${this.width}';}
}void main() {Rectangle rectangle = Rectangle(Vec2(100, 100));rectangle.draw();rectangle.move();
}

接口实现

必须强制覆写 所有 成员方法
必须 强制覆为 所有 成员变量提供 get 方法

class A {String name;A(this.name);log() {print(this.name);}
}class B {String name;B(this.name);log() {print(this.name);}
}class C implements A, B {// @override// String get name => 'C';// @override// set name(String _name) {//   this.name = _name;// }String name;int age;C(this.name, this.age);log() {print('${this.name} is ${this.age} years old');}
}void main() {C c = C('张三', 20);c.log();
}

混入类

定义的抽象方法 要求派生类必须实现 抽象方法
混入类不能拥有【构造方法】
二义性问题时,会 “后来居上"

mixin MoveAble {double speed = 20;void move() {print('===$runtimeType==');}void log();
}
// 两个混入类可以通过on 继承
mixin Position on MoveAble {double x = 0;double y = 0;
}// 因为 Position继承了 MoveAble, 应该先混入MoveAble
class Shap with MoveAble, Position {void log() {print('===log==');}
}void main() {Shap a = new Shap();a.speed = 100;a.move();a.log();print(a is MoveAble);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/48247.shtml

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

相关文章

IPEmotion交流电功率分析计算

一 应用背景 随着国内电动汽车行业的快速发展&#xff0c;在相同的道路环境和行驶状态下&#xff0c;增加电动车的整体续航里程和提升乘员对于行驶途中用电需求的满意度尤为重要。对此&#xff0c;需要采集试验过程中交直流电压电流信号&#xff0c;以计算出车辆各种部件输出和…

Docker容器与虚拟化技术:Docker镜像创建、Dockerfile实例

目录 一、理论 1.Docker镜像的创建方法 2.Docker镜像结构的分层 3.Dockerfile 案例 4.构建Systemctl镜像&#xff08;基于SSH镜像&#xff09; 5.构建Tomcat 镜像 6.构建Mysql镜像 二、实验 1.Docker镜像的创建 2. Dockerfile 案例 3.构建Systemctl镜像&#xff08;…

redis的应用场景

Redis最适合所有数据in-momory的场景&#xff0c;虽然Redis也提供持久化功能&#xff0c;但实际更多的是一个disk-backed的功能&#xff0c;跟传统意义上的持久化有比较大的差别&#xff0c;那么可能大家就会有疑问&#xff0c;似乎Redis更像一个加强版的Memcached&#xff0c;…

大数据平台需要做等保测评吗?怎么做?

大数据时代的数据获取方式、存储规模、访问特点、关注重点都有了很大不同&#xff0c;所以保证大数据平台数据安全尤其重要。因此不少人在问&#xff0c;大数据平台需要做等保测评吗&#xff1f;怎么做&#xff1f; 大数据平台需要做等保测评吗&#xff1f; 大数据平台是需要做…

数据结构之——(手撕)顺序表

本章会介绍的知识点如下图&#xff1a; 1&#xff1a; 顺序表的概念&#xff1a;顺序表是用一段物理地址连续的存储单元依次存储数据的线性结构&#xff0c;通常我们使用数组来表示&#xff0c;对数组进行增删查改。 顺序表的结构&#xff1a;逻辑结构与物理结构都是内存中一块…

AI Agent在情景猜谜场景下的AgentBench基准测试

目录 AgentBench评估哪些场景? 近日,来自清华大学、俄亥俄州立大学和加州大学伯克利分校的研究者设计了一个测试工具——AgentBench,用于评估LLM在多维度开放式生成环境中的推理能力和决策能力。研究者对25个LLM进行了全面评估,包括基于API的商业模型和开源模型。 他们发现…

数字人学习目录

数字人学习目录 百度PaddlePaddleHub图像风格迁移模型pp-tinypose模型 PaddleGANPaddleLitePaddleDetectionPP-TinyPose 人体骨骼关键点识别 PaddleSpeechVisualDLPaddleBobo TransformerWav2LibCLIPFFMpeg模型库数据集学习天地PythonJupyter Notebook Unity3DUE 百度Paddle P…

docker之Consul环境的部署

目录 一.Docker consul的介绍 1.1template模板(更新) 1.2registrator&#xff08;自动发现&#xff09; 1.3agent(代理) 二.consul的工作原理 三.Consul的特性 四.Consul的使用场景 五.搭建Consul的集群 5.1需求 5.2部署consul 5.3主服务器[192.168.40.20] 5.4client部署&…

华为OD-最大括号深度

题目描述 一个合法的括号匹配序列有以下定义: 1、空串""是一个合法的括号匹配序列 2、如果"X"和"Y"都是合法的括号匹配序列,"XY"也是一个合法的括号匹配序列 3、如果"X"是一个合法的括号匹配序列,那么"(X)"也是一…

ChatGPT:记一次超复杂的KVM桌面系统连接问答记录

​ KVM切换器可以使多台电脑共用键盘&#xff0c;显示器&#xff0c;鼠标&#xff0c;当电脑很多&#xff0c;显示器也是分为主从&#xff0c;需要共用键盘鼠标和音响设备&#xff0c;而买KVM切换器只有2个通道4进2出不满足需求时&#xff0c;就要组合多个KVM使用&#xff0c;大…

尽管价格走势平淡,但DeFi领域仍然非常有趣

DEX代表加密货币交易的创新&#xff0c;就在去年&#xff0c;这些去中心化、非托管平台的活动与CEX比相形见绌&#xff0c;但自那时以来&#xff0c;DEX已经迎头赶上&#xff0c;并在几个月内超越了中心化服务交易量&#xff0c;让用户能够更好地控制自己的资产和进行新类型的交…

oracle通配符大全

用于where比较条件的有 &#xff1a; 等于&#xff1a;、<、<、>、>、<> >,<:大于&#xff0c;小于 >.<:大于等于&#xff0c;小于等于 :等于 !,<>,^:不等于 包含&#xff1a;in、not in exists、not exists 范围&#xff1a;betwe…

python实战【外星人入侵】游戏并改编为【梅西vsC罗】(球迷整活)——搭建环境、源码、读取最高分及生成可执行的.exe文件

文章目录 &#x1f3a5;前言&#x1f4bc;安装Pygame&#x1f50b;游戏的实现读写并存储【外星人入侵】游戏最高分游戏源码alien_invasion.pygame_functions.pyship.pyalien.pybullet.pybutton.pyscoreboard.pygame_stats.pysettings.py宇宙飞船和外星人的 .bmp类型文件 &#…

Spark 图计算ONEID 进阶版

0、环境信息 本文采用阿里云maxcompute的spark环境为基础进行的&#xff0c;搭建本地spark环境参考搭建Windows开发环境_云原生大数据计算服务 MaxCompute-阿里云帮助中心 版本spark 2.4.5&#xff0c;maven版本大于3.8.4 ①配置pom依赖 详见2-1 ②添加运行jar包 ③添加配置信…

JVM——JVM 垃圾回收

文章目录 写在前面本节常见面试题本文导火索 1 揭开 JVM 内存分配与回收的神秘面纱1.1 对象优先在 eden 区分配1.2 大对象直接进入老年代1.3 长期存活的对象将进入老年代1.4 动态对象年龄判定1.5 主要进行 gc 的区域 2 对象已经死亡&#xff1f;2.1 引用计数法2.2 可达性分析算…

java面试基础 -- 深克隆 浅克隆

引例 说到java的克隆你还记得多少? 一说到克隆你可能就会想起来那个接口, 没错, 他就是Cloneable Cloneable是java里面内置的很常用的接口, 我们说 Object类中也有一个clone方法: 但是要想合法调用 clone 方法, 必须要先实现 Clonable 接口, 否则就会抛出 CloneNotSupportedEx…

如何下载和安装google字体(中文)

打开&#xff1a;https://fonts.google.com/ 点击字体 下载 解压 双击安装 查看 控制面板-》字体-》

scalacache 配合 guava

代码 package com.yy.guavaimport scalacache._ import scalacache.guava._ import scalacache._ import scalacache.guava._ import com.google.common.cache.CacheBuilder import scalacache.modes.sync._ import scalacache.serialization.binary._ import scalacache._ im…

.net日志系统

.NET 平台提供了强大的日志记录系统,用于在应用程序中记录各种事件、错误和调试信息。最常用的日志记录库是 Microsoft.Extensions.Logging,它是一个通用的日志接口和基础框架,可以与多种日志实现集成。以下是如何使用 .NET 日志系统的基本步骤: 安装 NuGet 包:首先,您需…

大数据课程K1——Spark概述

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解Spark的背景; ⚪ 了解Spark的特点; ⚪ 掌握Spark的生态系统模块、使用模式; ⚪ 掌握Spark的单机模式安装; 一、简介 1. 背景 Spark是UC Berkeley AMP lab (加州大学伯克利分校…