当前位置: 首页 > news >正文

Flutter基础 -- Dart 语言 -- 注释函数表达式

目录

1. 注释

1.1 单行注释

1.2 多行注释

1.3 文档注释

2. 函数

2.1 定义

2.2 可选参数

2.3 可选参数 默认值

2.4 命名参数 默认值

2.5 函数内定义

2.6 Funcation 返回函数对象

2.7 匿名函数

2.8 作用域

3. 操作符

3.1 操作符表

3.2 算术操作符

3.3 相等相关的操作符

3.4 类型判定操作符

3.5 条件表达式

3.6 位和移位操作符

3.7 级联操作符

3.8 其他操作符

4. 流程控制

5. 异常

错误的两种类型

5.1 Exception 类

5.2 Error 类

5.3 抛出错误

5.4 捕获错误

5.5 重新抛出错误以及finally

5.6 自定义异常


1. 注释

1.1 单行注释

// Symbol libraryName = new Symbol('dart.core');

1.2 多行注释

/*

* Symbol

*

Symbol libraryName = new Symbol('dart.core'); MirrorSystem mirrorSystem = currentMirrorSystem(); LibraryMirror libMirror = mirrorSystem.findLibrary(libraryName); libMirror.declarations.forEach((s, d) => print('$s - $d'));

*/

一般用在需要说明 类 函数 功能 输入 输出

1.3 文档注释

/// `main` 函数
///
/// 符号
/// 枚举
///
void main() {
  ...
}

类、函数 请用 /// 方式定义,后期导出文档有帮助

2. 函数

2.1 定义

int add(int x) {return x + 1;
}调用
add(1);

2.2 可选参数

int add(int x, [int? y, int? z]) {if (y == null) {y = 1;}if (z == null) {z = 1;}return x + y + z;
}调用
add(1, 2);

可选参数

使用方括号 [] 来定义可选参数 y 和 z。调用函数时可以选择传入或者不传入这两个参数。

可空类型

int? 表示 int 类型的值可以是 null。如果没有使用 int?,那么 Dart 不允许把 null 赋值给该参数。

默认值逻辑

在函数内部,通过 if (y == null) 和 if (z == null) 检查 y 和 z 是否为 null,如果是则赋值为默认的 1

2.3 可选参数 默认值

int add(int x, [int y = 1, int z = 2]) {return x + y;
}调用
int(1, 2);

就是cpp的缺省值

2.4 命名参数 默认值

int add({int x = 1, int y = 1, int z = 1}) {return x + y + z;
}调用
int(x: 1, y: 2);

这个会比可选参数更灵活,可以调用的时候再指定传参

2.5 函数内定义

void main(){int add(int x){return x + x;}print(add(1));
}

cpp的就是lambda

2.6 Funcation 返回函数对象

Function makeAdd(int x) {return (int y) => x + y;
}调用
var add = makeAdd(1);
print(add(5));

这里是add接收了一个函数对象,然后在print里面调用了返回的函数对象

2.7 匿名函数

下面代码定义了只有一个参数 item 且没有参数类型的匿名方法。 List 中的每个元素都会调用这个函数,打印元素位置和值的字符串:

const list = ['apples', 'bananas', 'oranges'];
list.forEach((item) {print('${list.indexOf(item)}: $item');
});

箭头函数 如果只有一个表达式

list.forEach((item) => print('${list.indexOf(item)}: $item'));

2.8 作用域

下面是一个嵌套函数中变量在多个作用域中的示例:

bool topLevel = true;void main() {var insideMain = true;void myFunction() {var insideFunction = true;void nestedFunction() {var insideNestedFunction = true;assert(topLevel);assert(insideMain);assert(insideFunction);assert(insideNestedFunction);}}
}

注意 nestedFunction() 函数可以访问包括顶层变量在内的所有的变量。简单说就是被包含的作用域内可以访问包含其的外部变量

3. 操作符

3.1 操作符表

优先级顺序 上面左边 优先级高于 右边下面

3.2 算术操作符

3.3 相等相关的操作符

3.4 类型判定操作符

  int a = 123;String b = 'ducafecat';String c = 'abc';print(a as Object);print(b is String);print(c is! String);

3.5 条件表达式

  bool isFinish = true;String txtVal = isFinish ? 'yes' : 'no';bool isFinish;isFinish = isFinish ?? false;orisFinish ??= false;

3.6 位和移位操作符

3.7 级联操作符

  StringBuffer sb = StringBuffer();sb..write('hello')..write('word')..write('\n')..writeln('doucafecat');

如果没有级联操作符,就需要 sb.write(...);sb.write(...);....

3.8 其他操作符

  String a;print(a?.length);

4. 流程控制

if else;for;while;do while;switch case;break;continue;相信这些就不用博主多说了哈

值得一提的是 continue 有一点不一样

continue 跳转指定位置(就像cpp的go to,新增了这个功能)

String command = "close";
switch (command) {case "open":print("open");break;case "close":print("close");continue doClear;case "close2":print("close2");continue doClear;doClear:case "doClose":print("doClose");break;default:print("other");
}

5. 异常

错误的两种类型

5.1 Exception 类

Exception class

可以捕获,可以安全处理

5.2 Error 类

Error class

一般用在不可恢复,容易崩溃的情况

5.3 抛出错误

  // Exception 对象throw new FormatException('这是一个格式错误提示');// Error 对象throw new OutOfMemoryError();// 任意对象throw '这是一个异常';

5.4 捕获错误

  try {// throw new FormatException('这是一个格式错误提示');throw new OutOfMemoryError();} on OutOfMemoryError {print('没有内存了');} catch (e) {print(e);}

5.5 重新抛出错误以及finally

  try {throw new OutOfMemoryError();} on OutOfMemoryError {print('没有内存了');rethrow;} catch (e) {print(e);} finally {print('end');}

try里面是抛出错误,on是捕获特定错误,catch是捕获所有错误,retgrow是重新抛出异常,finally是不管有没有错都会走的!

5.6 自定义异常

implements关键字可以自定义异常

class DioError implements Exception {DioError(this.message, this.type);final String message;final String type;@overrideString toString() {return 'DioError{message: $message, type: $type}';}
}void main(List<String> args) {throw DioError("error", "type");
}

创作不易,希望读者三连支持 💖
赠人玫瑰,手有余香 💖

相关文章:

Flutter基础 -- Dart 语言 -- 注释函数表达式

目录 1. 注释 1.1 单行注释 1.2 多行注释 1.3 文档注释 2. 函数 2.1 定义 2.2 可选参数 2.3 可选参数 默认值 2.4 命名参数 默认值 2.5 函数内定义 2.6 Funcation 返回函数对象 2.7 匿名函数 2.8 作用域 3. 操作符 3.1 操作符表 3.2 算术操作符 3.3 相等相关的…...

“仿RabbitMQ实现消息队列”---整体架构与模块说明

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、概念性框架理解 我们主要实现的内容&#xff1a; 1.Broker服务器&#xff1a;消息队列服务器&#xff08;服务端&…...

springboot如何快速接入minio对象存储

1.在项目中添加 Minio 的依赖&#xff0c;在使用 Minio 之前&#xff0c;需要在项目中添加 Minio 的依赖。可以在 Maven 的 pom.xml 文件中添加以下依赖&#xff1a; <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId>&l…...

第六届“智能设计+运维”国产工业软件研讨会暨2024年天洑软件用户大会圆满召开

2024年5月23-24日&#xff0c;第六届“智能设计运维”国产工业软件研讨会暨2024年天洑软件用户大会在南京举办。来自国产工业软件研发企业、制造业企业、高校、科研院所的业内大咖&#xff0c;能源动力、船舶海事、车辆运载、航空航天、新能源汽车、动力电池、消费电子、石油石…...

05.k8s弹性伸缩

5.k8s弹性伸缩 k8s弹性伸缩,需要附加插件heapster监控 弹性伸缩&#xff1a;随着业务访问量的大小&#xff0c;k8s系统中的pod比较弹性&#xff0c;会自动增加或者减少pod数量&#xff1b; 5.1 安装heapster监控 1:上传并导入镜像,打标签 ls *.tar.gz for n in ls *.tar.gz…...

【数据结构】详解二叉树

文章目录 1.树的结构及概念1.1树的概念1.2树的相关结构概念1.3树的表示1.4树在实际中的应用 2.二叉树的结构及概念2.1二叉树的概念2.2特殊的二叉树2.2.1满二叉树2.2.2完全二叉树 2.3 二叉树的性质2.4二叉树的存储结构2.4.1顺序结构2.4.2链表结构 1.树的结构及概念 1.1树的概念…...

MapDB:轻量级、高性能的Java嵌入式数据库引擎

MapDB&#xff1a;轻量级、高性能的Java嵌入式数据库引擎 在今天的软件开发中&#xff0c;嵌入式数据库因其轻便、高效和易于集成而备受欢迎。对于Java开发者来说&#xff0c;MapDB无疑是一个值得关注的选项。MapDB是一个纯Java编写的嵌入式数据库引擎&#xff0c;它提供了高性…...

Rye: 一个革新的Python包管理工具

文章目录 Rye: 一个革新的Python包管理工具Rye的诞生背景Rye的核心特性Rye的安装与使用Rye的优势与挑战Rye的未来展望结语 Rye: 一个革新的Python包管理工具 在Python生态系统中&#xff0c;包管理一直是一个复杂且令人头疼的问题。随着Python社区的不断发展&#xff0c;出现了…...

如何在C#代码中判断当前C#的版本和dotnet版本

代码如下&#xff1a; using System.Reflection; using System.Runtime.InteropServices;var csharpVersion typeof(string).Assembly.GetCustomAttributes(typeof(AssemblyFileVersionAttribute), false).OfType<AssemblyFileVersionAttribute>().FirstOrDefault()?.…...

Linux 36.3@Jetson Orin Nano之系统安装

Linux 36.3Jetson Orin Nano之系统安装 1. 源由2. 命令行烧录Step 1&#xff1a;下载Linux 36.3安装程序Step 2&#xff1a;下载Linux 36.3根文件系统Step 3&#xff1a;解压Linux 36.3安装程序Step 4&#xff1a;解压Linux 36.3根文件系统Step 5&#xff1a;安装应用程序Step …...

案例实践 | 基于长安链的首钢供应链金融科技服务平台

案例名称-首钢供应链金融科技服务平台 ■ 建设单位 首惠产业金融服务集团有限公司 ■ 用户群体 核心企业、资金方&#xff08;多为银行&#xff09;等合作方 ■ 应用成效 三大业务场景&#xff0c;共计关联29个业务节点&#xff0c;覆盖京票项目全部关键业务 案例背景…...

Vue3实战笔记(55)—Vue3.4新特性揭秘:defineModel重塑v-model,拥抱高效双向数据流!

文章目录 前言defineModel() 基本用法总结 前言 v-model 可以在组件上使用以实现双向绑定。 从 Vue 3.4 开始&#xff0c;推荐的实现方式是使用 defineModel() 宏 defineModel() 基本用法 定义defineModel()&#xff1a; <!-- Child.vue --> <script setup> con…...

C++ | Leetcode C++题解之第123题买卖股票的最佳时机III

题目&#xff1a; 题解&#xff1a; class Solution { public:int maxProfit(vector<int>& prices) {int n prices.size();int buy1 -prices[0], sell1 0;int buy2 -prices[0], sell2 0;for (int i 1; i < n; i) {buy1 max(buy1, -prices[i]);sell1 max(…...

微信小程序中Button组件的属性值和用法详解

在微信小程序开发中&#xff0c;Button组件是非常常用的UI组件之一&#xff0c;它可以让用户进行交互操作&#xff0c;比如提交表单、跳转页面等。了解Button组件的属性值和用法对于开发者来说至关重要。 1. Button组件简介 简要介绍Button组件在小程序中的作用和重要性&…...

等保测评 | 等保测评简介及流程具体是什么?

等保测评是指对信息系统进行安全性评估和测试&#xff0c;以确保其符合国家相关等级保护要求。在当前信息时代&#xff0c;各类机构和企业面临着日益严峻的网络安全风险&#xff0c;等保测评成为了保障信息系统安全的重要手段之一。本文将介绍等保测评的基本概念、流程和重要性…...

CompassArena 司南大模型测评--代码编写

测试角度 要说测试模型&#xff0c;对咱们程序员来说&#xff0c;那自然是写代码的能力强不强比较重要了。那么下面我们以 leetcode 中的一道表面上是困难题的题目来考考各家大模型&#xff0c;看看哪个才应该是咱们日常写程序的帮手。 部分模型回答 问题部分如下截图&#…...

叉积和法向量学习笔记

目录 叉积用的内积 相似点 给定平面上的两个向量 A 和 B&#xff0c;叉积和法向量相等吗 理解这点的关键&#xff1a; 结论&#xff1a; 叉积判断平面内两个向量是否相交 叉积&#xff08;Cross Product&#xff09;和法向量&#xff08;Normal Vector&#xff09;确实有…...

YZW900规格书

title: “深圳市沃进科技有限公司” 深圳市沃进科技有限公司 TOP视图 特性 异地组网&#xff0c;远程访问有线/无线备份单模双卡备份5G转有线&#xff0c;5G转WIFI2.4G5.8G双频WIFI三网口&#xff0c;WAN/LAN可切换软硬件看门狗智能防掉线云平台、客户端远程管理安装支架安装铝…...

9岁学生学什么编程好一些:探索编程启蒙的奥秘

9岁学生学什么编程好一些&#xff1a;探索编程启蒙的奥秘 在数字时代&#xff0c;编程已逐渐成为一项基本技能。对于9岁的学生来说&#xff0c;选择适合的编程课程或平台&#xff0c;对于培养逻辑思维、创新思维以及解决问题的能力至关重要。那么&#xff0c;9岁学生学什么编程…...

Java反射实战指南:反射机制的终极指南

1. 反射机制简介 在Java中&#xff0c;反射机制提供了一种强大的工具&#xff0c;用于在运行时检查类、接口、字段和方法。但它的重要性不止于此&#xff0c;它允许程序动态加载、探索和使用编译时完全未知的代码。这种能力是Java语言支持的一种“动态”特性&#xff0c;使得J…...

Flask RESTful 示例

目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题&#xff1a; 下面创建一个简单的Flask RESTful API示例。首先&#xff0c;我们需要创建环境&#xff0c;安装必要的依赖&#xff0c;然后…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

vue3+vite项目中使用.env文件环境变量方法

vue3vite项目中使用.env文件环境变量方法 .env文件作用命名规则常用的配置项示例使用方法注意事项在vite.config.js文件中读取环境变量方法 .env文件作用 .env 文件用于定义环境变量&#xff0c;这些变量可以在项目中通过 import.meta.env 进行访问。Vite 会自动加载这些环境变…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

解读《网络安全法》最新修订,把握网络安全新趋势

《网络安全法》自2017年施行以来&#xff0c;在维护网络空间安全方面发挥了重要作用。但随着网络环境的日益复杂&#xff0c;网络攻击、数据泄露等事件频发&#xff0c;现行法律已难以完全适应新的风险挑战。 2025年3月28日&#xff0c;国家网信办会同相关部门起草了《网络安全…...

Git常用命令完全指南:从入门到精通

Git常用命令完全指南&#xff1a;从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...

关于uniapp展示PDF的解决方案

在 UniApp 的 H5 环境中使用 pdf-vue3 组件可以实现完整的 PDF 预览功能。以下是详细实现步骤和注意事项&#xff1a; 一、安装依赖 安装 pdf-vue3 和 PDF.js 核心库&#xff1a; npm install pdf-vue3 pdfjs-dist二、基本使用示例 <template><view class"con…...

Android写一个捕获全局异常的工具类

项目开发和实际运行过程中难免会遇到异常发生&#xff0c;系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler&#xff0c;它是Thread的子类&#xff08;就是package java.lang;里线程的Thread&#xff09;。本文将利用它将设备信息、报错信息以及错误的发生时间都…...