Flutter学习7 - Dart 泛型
1、泛型类
//泛型类
class Cache<T> {final Map<String, T> _cache = {};void saveData(String key, T value) {_cache[key] = value;}//泛型方法T? getData(String key) {return _cache[key];}
}
void main() {Cache<int> cache1 = Cache();const String name1 = "Leon";cache1.saveData(name1, 18);print("name: $name1 age: ${cache1.getData(name1)}"); //name: leon age: 18Cache<String> cache2 = Cache();const String name2 = "Alice";cache2.saveData(name2, "woman");print("name: $name2 sex: ${cache2.getData(name2)}"); //name: Alice sex: woman
}
2、泛型约束
class Person {String? name;int? age;Person(this.name, this.age);void display() {print("name: $name age: $age");}
}
class Student extends Person {String? _school;Student(name, age, this._school) : super(name, age);void display() {print("name: $name age: $age school: $_school");}
}
//泛型约束:T 只能是 Person 的子类
class Member<T extends Person> {T? _person;Member(this._person);void show() {if (_person != null) {_person!.display();}}
}
void main() {Member<Student> member = Member(Student("Leon", 18, "hafo"));member.show(); //name: Leon age: 18 school: hafo
}
3、补充:Flutter 的一些编程技巧
(1)空安全
//安全调用
void safeUse() {List? list;print("list: ${list?.length}"); //list: null
}
(2)默认值
//默认值
void defaultUse() {bool? isOpen;//默认值String result = '';if (isOpen ?? false) {//isOpen == trueresult = '打开';} else {//isOpen == false || isOpen == nullresult = '关闭';}print("result: $result"); //关闭
}
(3)集合判空
//集合判空
void emptyUse() {List list = [];list.add(0);list.add('');list.add(null);list.add(true);for (int i = 0; i < list.length; i++) {if ([0, '', null].contains(list[i])) {print("index: $i value: 空");} else {print("index: $i vaule: ${list[i]}");}}// index: 0 value: 空// index: 1 value: 空// index: 2 value: 空// index: 3 vaule: true
}
相关文章:
Flutter学习7 - Dart 泛型
1、泛型类 //泛型类 class Cache<T> {final Map<String, T> _cache {};void saveData(String key, T value) {_cache[key] value;}//泛型方法T? getData(String key) {return _cache[key];} }void main() {Cache<int> cache1 Cache();const String name…...
Git 基本操作 ⼯作区、暂存区、版本库
创建本地仓库: 创建 Git 本地仓库 要提前说的是,仓库是进行版本控制的⼀个文件目录。我们要想对文件进行版本控制,就必须先创建⼀个仓库出来。 首先touch 一个文件: 初始化仓库: 创建完成后,我们会发现当前…...
利用Vue3的新API(customRef)实现防抖效果
customRef是创建一个自定义的 ref,然后显式声明对其依赖追踪和更新触发的控制方式。因为ref是直接更新的,数据修改会马上更新,而customRef可以认为控制更新的过程,比如可以利用这个api控制 空格输入限制、数据更新速度控制、违规内…...
【Linux】在 Ubuntu 系统下使用 Screen 运行 Python 脚本
在 Ubuntu 系统下使用 Screen 运行 Python 脚本的优点 在 Ubuntu 操作系统中,Screen 是一种非常有用的工具,特别是在需要长时间运行的任务或者需要在后台运行的任务中。结合 Python 脚本,Screen 提供了一种灵活且高效的方式来管理和执行任务…...
jxls——自定义命令设置动态行高
文章目录 前言依赖引入绘制 jxls 批注的 excel 模板测试类编写自定义命令关于自动换行 前言 之前的博客中都简单说了数据的渲染和导出excel文件。包括固定的 表头结构,以及动态 表头和表数据等方式。 本篇博客主要说明自定义命令的方式,控制输出excel文…...
前端面试练习24.3.2-3.3
HTMLCSS部分 一.说一说HTML的语义化 在我看来,它的语义化其实是为了便于机器来看的,当然,程序员在使用语义化标签时也可以使得代码更加易读,对于用户来说,这样有利于构建良好的网页结构,可以在优化用户体…...
优先级队列(Java )
目录 一、 优先级队列1、概念 二、优先级队列的模拟实现1、堆的概念2、堆的存储方式 三、堆的创建1、堆向下调整2、堆的创建3、建堆的时间复杂度 四、堆的插入与删除1、堆的插入2、堆的删除 五、用堆模拟实现优先级队列 一、 优先级队列 1、概念 优先级队列(Priori…...
大宋咨询如何进行汽车门店6S标准现场检查
随着汽车市场的快速发展,汽车门店的现场管理日益受到关注。6S标准现场检查作为一项重要的评估工具,正在被越来越多的汽车厂商和经销商采用。 6S标准现场检查是指对汽车门店的整理、整顿、清洁、清扫、素养和安全六个方面进行规范和优化,旨在…...
仿牛客网项目---点赞模块的实现
本篇文章介绍一下项目中的点赞模块。 点赞模块是一个通过使用Redis实现的功能模块,它提供了点赞操作的处理逻辑和数据存取功能。通过服务类和控制器类的配合,点赞模块实现了用户对实体的点赞、点赞数量的查询、点赞状态的查询等功能。该模块使用了Redis…...
【AI视野·今日CV 计算机视觉论文速览 第300期】Fri, 1 Mar 2024
AI视野今日CS.CV 计算机视觉论文速览 Fri, 1 Mar 2024 Totally 114 papers 👉上期速览✈更多精彩请移步主页 Daily Computer Vision Papers DistriFusion: Distributed Parallel Inference for High-Resolution Diffusion Models Authors Muyang Li, Tianle Cai, J…...
【单片机学习的准备】
文章目录 前言一、找一个视频是二、画图软件三、装keil5 仿真protues总结 前言 提示:这里可以添加本文要记录的大概内容: 项目需要: 提示:以下是本篇文章正文内容,下面案例可供参考 一、找一个视频是 https://www.b…...
力扣hot100:438.找到字符串中所有字母异位词
26个字符,我复制怎么了?26个字符我比较个数怎么了? 顶多时间复杂度*26 本题用固定窗口大小的滑动窗口每次比较包含26个元素的数组次数,最容易写。 动态窗口大小哈希表存数值(双指针差值)难想难写。 一、动态…...
Kali Linux 2024.1
Kali Linux 2024.1刚刚发布,标志着这个备受欢迎的安全重点Linux发行版在今年的首次重大更新。以其先进的渗透测试和安全审计功能而闻名,它是安全专业人员和爱好者的首选工具。 Kali 2024.1 亮点 本次发布由 Linux 内核 6.6 提供支持,突出了…...
springboot启动加载
目录 使用PostConstruct注解 实现InitializingBean接口 实现CommandLineRunner接口 实现ApplicationRunner接口 使用EventListener注解监听ApplicationReadyEvent事件 应用启动完成之前或者之后,我们需要拿数据库中的一些数据加载到本地缓存中。这些数据一般都…...
基于Java的智能停车场管理系统(Vue.js+SpringBoot)
目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容A. 车主端功能B. 停车工作人员功能C. 系统管理员功能1. 停车位模块2. 车辆模块3. 停车记录模块4. IC卡模块5. IC卡挂失模块 三、界面展示3.1 登录注册3.2 车辆模块3.3 停车位模块3.4 停车数据模块3.5 IC卡档案模块3.6 IC卡挂…...
ESD Clamp cell是什么?
ESD CLAMP cell(静电放电钳位单元)是一种专门设计来保护集成电路(IC)免受静电放电(ESD)损害的电路元件。静电放电是在电子设备的组件之间或内部发生的突然电流放电,它可能会损坏电路或降低其性能…...
费率电能表
费率电能表是一种用于测量家庭、商业和工业用电的设备,有效的实现分段计费、分时计费,优化用电效率。费率电能表的产生是为了缓解高峰期的用电负荷,平衡各时间段的用电负荷;根据当地用电负荷曲线情况制定时段费率 在费率电能表中…...
2张图2秒钟3D重建!这款AI工具火爆GitHub,网友:忘掉Sora
只需2张图片,无需测量任何额外数据—— 当当,一个完整的3D小熊就有了: 这个名为DUSt3R的新工具,火得一塌糊涂,才上线没多久就登上GitHub热榜第二。 ▲image 有网友实测,拍两张照片,真的就重建…...
C++高级面试题:请解释 C++ 中的指针和引用之间的区别。
请解释 C 中的指针和引用之间的区别。 在 C 中,指针(Pointers)和引用(References)都是用于处理内存地址的工具,但它们有一些重要的区别: 语法和用法: 指针使用 * 运算符来访问其所…...
Git 配置处理客户端无法正常访问到 github 原网站时,npm 下载依赖包失败的问题
Git 配置处理客户端无法正常访问到 github 原网站时,npm 下载依赖包失败的问题 使用 github 的镜像网站地址或类似的替代产品地址,代替到 npm 拉取依赖包的 git 地址本地Git配置 例如:执行一下命令,则是以https://kgithub.com 替…...
linux之kylin系统nginx的安装
一、nginx的作用 1.可做高性能的web服务器 直接处理静态资源(HTML/CSS/图片等),响应速度远超传统服务器类似apache支持高并发连接 2.反向代理服务器 隐藏后端服务器IP地址,提高安全性 3.负载均衡服务器 支持多种策略分发流量…...
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?
Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)
一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
3-11单元格区域边界定位(End属性)学习笔记
返回一个Range 对象,只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意:它移动的位置必须是相连的有内容的单元格…...
项目部署到Linux上时遇到的错误(Redis,MySQL,无法正确连接,地址占用问题)
Redis无法正确连接 在运行jar包时出现了这样的错误 查询得知问题核心在于Redis连接失败,具体原因是客户端发送了密码认证请求,但Redis服务器未设置密码 1.为Redis设置密码(匹配客户端配置) 步骤: 1).修…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
