【Flutter 开发实战】Dart 基础篇:条件循环表达式

在这里插入图片描述

Dart 是一门强大的编程语言,其条件和循环表达式在编写灵活、高效代码中起着关键作用。本文将深入介绍 Dart 中的条件表达式、循环表达式、以及关键字如 forwhiledo...whilebreakcontinue 等内容,旨在为初学者提供清晰的指导。

1. 条件表达式

Dart 中的条件表达式主要通过 if 语句来实现,用于根据不同的条件执行相应的代码块。下面用一个简单的下雨带伞的案例来讲解一下:

加入某天你想开发一个天气预报 app,天气预报 app 中可能需要一个根据天气提示是否带伞的功能,那么我们可能就需要根据今天是否下雨来提示我们是否要带伞,那么就有以下两种情况:

  • 下雨了 → 提醒我们带伞
  • 没下雨 → 提醒我们不用带伞
    就如下面的流程图所示:

在这里插入图片描述

像这种需要根据某个变量的值来执行不同的功能的情况下就需要使用条件判断语句来实现我们想要达到的功能。

void main() {bool isRaining = true;if (isRaining) {print("Remember to take an umbrella!");} else {print("No need for an umbrella today.");}
}

if 语句的结构非常直观,根据 isRaining 变量的值选择执行不同的代码块。

2. 循环表达式

2.1 for 循环

在 Dart 中,for 循环是一种迭代结构,通过初始化、条件判断和迭代器来控制循环次数。这种结构使得我们可以方便地重复执行特定的代码块。

假设我们想要依次打印出数字 0 到 4 中的数字,我们就可以使用 for 循环来实现:

在这里插入图片描述

void main() {for (int i = 0; i < 5; i++) {print("Iteration $i");}
}

for 循环从 i = 0 开始,当 i 小于 5 时执行循环体,每次迭代增加 i 的值。直到 i 大于或等于 5 时退出循环。

2.2 while 循环

在 Dart 中,while 循环是一种迭代结构,用于在满足条件时执行特定的代码块。与 for 循环相比,while 循环更加灵活,只需要满足条件,就可以一直执行循环体内的代码。

假设我们想要通过 while 循环打印出数字 0 到 4 的循环序列,可以这样实现:

void main() {int count = 0;while (count < 5) {print("Count: $count");count++;}
}

首先通过 int count = 0 进行初始化,然后通过 while (count < 5) 进行条件判断,循环体内打印当前计数值,并通过 count++ 进行迭代。这样,当 count 达到 5 时,循环停止。

总的来说,while 循环提供了一种更加灵活的循环结构,适用于各种场景下需要动态条件判断的情况。

2.3 do…while 循环

do...while 循环是一种迭代结构,它与 while 循环相似,但不同之处在于它会先执行一次循环体,然后再判断条件是否满足。这确保循环体至少执行一次。

让我们通过一个简单的例子,使用 do...while 循环打印出数字 0 到 4 的循环序列:

void main() {int count = 0;do {print("Count: $count");count++;} while (count < 5);
}

在上述代码中,首先通过 int count = 0 进行初始化,然后使用 do...while 循环,在循环体内打印当前计数值,并通过 count++ 进行迭代。这样,即使在满足条件之前,循环体至少会执行一次。

3. break 和 continue

3.1 break 语句

在 Dart 中,break 语句是用于立即终止循环的关键字,它可以在 switch 语句、for 循环和 while 循环中使用。下面通过一个 for 循环的例子来演示 break 语句的功能:

在这里插入图片描述

void main() {for (int i = 0; i < 5; i++) {if (i == 3) {print("Breaking out of the loop at iteration $i");break;}print("Iteration $i");}
}

在上述代码中,for 循环会迭代五次,但当 i 的值等于 3 时,break 语句会立即终止循环,跳出循环体。这导致在达到条件的那一刻,不再执行循环体内位于 break 后的语句。

break 语句在循环中的应用非常灵活,可以用于提前结束循环,跳出当前层次的迭代结构。在实际应用中,break 经常与条件语句结合使用,用于在满足某条件时提前退出循环。

3.2 continue 语句

在 Dart 中,continue 语句用于结束当前循环中尚未执行的语句,接着进行下一次是否执行循环的判断。以下是一个使用 continue 的例子,在 for 循环中跳过特定的迭代:

在这里插入图片描述

void main() {for (int i = 0; i < 5; i++) {if (i == 2) {print("Skipping iteration $i");continue;}print("Iteration $i");}
}

在上述代码中,当 i 的值等于 2 时,continue 语句会跳过当前迭代,不执行 print("Iteration $i") 语句,直接进入下一次迭代。这使得在特定条件下可以选择跳过循环体的部分内容。

值得注意的是,虽然 continue 可以用在 for 循环和 while 循环中,但在使用时需要小心,以避免进入死循环。在实际应用中,continue 通常用于特定条件下跳过当前迭代,继续执行下一次循环。

结语

通过本文的详细介绍,希望读者对 Dart 中的条件表达式、循环表达式以及 breakcontinue 关键字有了更清晰的理解。这些基础概念是编写高效代码的关键,对于初学者来说是必须掌握的知识点。希望读者能够通过实践和深入学习,更加熟练地运用这些语法特性。

作者信息

作者 : 繁依Fanyi
CSDN: https://techfanyi.blog.csdn.net
掘金:https://juejin.cn/user/4154386571867191

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

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

相关文章

Netty开篇——BIO章(二)

Java BIO 基本介绍 属于传统的 java io编程&#xff0c;内容见java.io包中BIO(blocking I/O) : 同步阻塞&#xff0c;服务器实现模式为个连接一个线程&#xff0c;即客户端有连接请求时服务器端就需要启动一个线程进行处理&#xff0c;如果这个连接不做任何事情会造成不必要的线…

数字化转型的关键:JVS低代码的列表页导入功能解析

在当今数字化时代&#xff0c;数据的管理和迁移变得至关重要。为了满足广大用户的需求&#xff0c;JVS低代码精心打造了“列表页导入功能”。这个功能专为高效处理列表页数据而设计&#xff0c;为用户提供了简单、便捷的数据导入、导出和模板下载服务。 列表页导入功能 列表页…

1、理解Transformer:革新自然语言处理的模型

目录 一、论文题目 二、背景与动机 三、卖点与创新 四、解决的问题 五、具体实现细节 0. Transformer 架构的主要组件 1. 注意力、自注意力&#xff08;Self-Attention&#xff09;到多头注意力&#xff08;Multi-Head Attention&#xff09; 注意力到底是做什么的&…

基于JAVA+ssm智能旅游线路规划系统设计与实现【附源码】

基于JAVAssm智能旅游线路规划系统设计与实现【附源码】 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql…

Neo4j恢复

主要记录windows环境下从备份文件中恢复Neo4j&#xff0c; Linux环境同理 备份在上一篇中有介绍&#xff0c;参考: Neo4j备份-CSDN博客 误删数据 为了模拟误删除场景&#xff0c;我们查询Person&#xff0c;并模拟误操作将其进行删除&#xff1b; match(p:Person) return …

SQL基础知识3

一、删除数据 1、delete操作 删除之前一定要查询一下&#xff0c;确保删除的数据是对的 逻辑删除&#xff1a;在表中新增一个字段&#xff1a;flag/status 二、更新数据 本质上的逻辑删除 三、查询数据 1、联表查询 1、内连接 交集的部分叫内连接 小知识&#xff1a;一般…

thinkphp美容SPA管理系统源码带文字安装教程

thinkphp美容SPA管理系统源码带文字安装教程 运行环境 服务器宝塔面板 PHP 7.0 Mysql 5.5及以上版本 Linux Centos7以上 基于thinkphp3.23B-JUI1.2开发&#xff0c;权限运用了Auth类认证&#xff0c;权限可以细分到每个功能&#xff0c; 增删改查功能一应俱全&#xff0c;整合了…

随机过程——卡尔曼滤波学习笔记

一、均方预测和随机序列分解 考虑随机序列 使用预测 定义 称为的均方可预测部分。 若相互独立&#xff0c;则是均方不可预测的。 定义随机序列的新息序列 V(k)基于样本观测的条件均值为0&#xff0c;即均方不可预测。 V(k)与是正交的&#xff0c;即。 二、卡尔曼滤波 …

目标检测脚本之mmpose json转yolo txt格式

目标检测脚本之mmpose json转yolo txt格式 一、需求分析 在使用yolopose及yolov8-pose 网络进行人体姿态检测任务时&#xff0c;有时需要标注一些特定场景的中的人型目标数据&#xff0c;用来扩充训练集&#xff0c;提升自己训练模型的效果。因为单纯的人工标注耗时费力&…

响应式Web开发项目教程(HTML5+CSS3+Bootstrap)第2版 例3-4 CSS 立方体

代码 <!doctype html> <html> <head> <meta charset"utf-8"> <title>CSS 立方体</title> <link href"CSS/style.css" rel"stylesheet" type"text/css"> <style> .box {width: 200px…

Spring上下文之support模块MessageSourceAccessor

博主介绍:✌全网粉丝5W+,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验✌ 博主作品:《Java项目案例》主要基于SpringBoot+MyBatis/MyBatis-plus+…

「JavaSE」类和对象1

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;快来卷Java啦 &#x1f387;欢迎点赞收藏加关注哦&#xff01; 类和对象 &#x1f349;类的定义&#x1f34c;类的实例化 &#x1f349;this引用&#x1f349;对象的构造及初始化&#x1f34c;…

【JAVA】Java 中什么叫单例设计模式?请用 Java 写出线程安全的单例模式

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 懒汉式&#xff08;Lazy Initialization&#xff09;&#xff1a; 双重检查锁定&#xff08;Double-Checked Locking&#xff09;…

MySQL篇—自带物理克隆数据工具Clone插件介绍(第一篇,总共三篇)

各位小伙伴&#xff0c;今天我为大家介绍一下MySQL Clone Plugin这个插件&#xff0c;简单来说&#xff0c;就是MySQL 8.0.17版本之后的一个物理克隆数据工具&#xff0c;它能够帮助我们快速、高效地克隆或复制数据库&#xff0c;极大地简化了数据库迁移、备份和恢复的过程&…

5分钟了解股票交易!上海股票开户交易佣金最低是多少?怎么开户费用最低?

股票交易是指通过证券市场买卖股票的活动。以下是股票交易的基本步骤&#xff1a; 开立证券账户&#xff1a;首先需要选择一家证券公司&#xff0c;向其提交相关材料开立证券账户&#xff0c;并完成账户开立手续。 研究和选择股票&#xff1a;在决定购买股票之前&#xff0c;建…

GPCR蛋白一般残基编号(Generic residue numbering)

文章目录 前言定义特殊情况参考连接 前言 在相应的文章中看到对于对于描述GPCR中的序列位置&#xff0c;往往在除了在当前蛋白的氨基酸序列序号意外&#xff0c;会在右上角标注一个类似于6 x 49的编号。经查这个编号有一个统一名称&#xff1a;Generic residue numbering。本文…

【AT 指令开发】软件框架与接口

目录 1 软件逻辑2.代码2.1 at_command.h2.2 at_command.c本文主要用于记录纯MCU无OS下,AT 指令开发软件框架 1 软件逻辑 2.代码 2.1 at_command.h #ifndef AT_COMMAND_H #define AT_COMMAND_Hvoid AT_CMD_Process(uint8_t *uartBuffer, uint8_t dataLen);/*描述AT指令返回值…

Vue+element-china-area-data实现省市区三级联动

安装依赖 npm install element-china-area-data -S cnpm install element-china-area-data -S 引用 import { provinceAndCityData, regionData, provinceAndCityDataPlus, regionDataPlus, CodeToText, TextToCode } from element-china-area-data&#xff1b; provinceAnd…

写点东西《Docker入门(上)》

写点东西《Docker入门&#xff08;上&#xff09;》 环境变量 Docker 镜像 Docker CMD 与 ENTRYPOINT 有什么区别 Docker 中的网络&#xff1a; Docker 存储&#xff1a; Docker 是一个工具&#xff0c;允许开发人员将他们的应用程序及其所有依赖项打包到一个容器中。然后&…

【Redis】Redis 进阶

文章目录 1. BigKey1.1 MoreKey1.2 BigKey 2. 缓存双写一致性更新策略2.1 读缓存数据2.2 数据库和缓存一致性的更新策略2.3 canal 实现双写一致性 3. 进阶应用3.1 统计应用3.2 hyperloglog3.3 GEO3.4 bitmap 4. 布隆过滤器5. Redis 经典问题5.1 缓存预热5.2 缓存穿透5.3 缓存击…