scala内建控制结构
一、条件表达式
(一)语法格式
- if (条件) 值1 else 值2
(二)执行情况
- 条件为真,结果是值1;条件为假,结果是值2。如果if和else的返回结果同为某种类型,那么条件表达式结果也是那种类型,否则就是Any类型
- Scala的条件表达式有点类似于Java的条件运算符
(三)案例演示
任务1、根据输入值的不同进行判断


任务2、编写Scala程序,判断奇偶性
- 打开Scala项目ScalaDemo,创建net.huawei.day02包,在包里创建Example01对象
package net.gxf.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result = if (n % 2 == 0)n.toString + "是偶数~"elsen.toString + "是奇数~"println(result)}
}


二、块表达式
案例演示


三、for循环
(一)单重for循环
- 案例演示

任务1:输出1到10
- 两种方式实现,一种使用Range类,一种使用to运算符

任务2、遍历字符串,输出每个字符
- 方法一、按索引取字符串的每个字符(传统for循环)

- 方法二:将字符串看作一个由多个字符组成的集合(增强for循环)

任务3、计算 1 + 2 + 3 + … + 100
- 注意sum必须定义为var型变量

- 利用集合的归并方法来求和最简单

任务4、输出列表内的偶数(过滤)

任务5、输出全部两位素数
for (n <- 10 to 100; if !(n % 2 == 0 || n % 3 == 0 || n % 5 == 0 || n % 7 == 0)) print(n.toString + " ")

(二)嵌套for循环
案例演示
任务1、打印九九表

package net.gxf.day02/*** 功能:双重循环打印九九表* 作者:gxg* 日期:2023年02月22日*/
object Example02 {def main(args: Array[String]): Unit = {for (i <- 1 to 9) {for (j <- 1 to i) {print(i.toString + "×" + j + "=" + (i * j) + "\t")}println()}}
}
方法一、采用双重循环来实现

方法二、采用单重循环来实现

package net.gxf.day02/*** 功能:单重循环打印九九表* 作者:gxf* 日期:2023年02月22日*/
object Example03 {def main(args: Array[String]): Unit = {for (i <- 1 to 9; j <- 1 to i) {print(i.toString + "×" + j + "=" + (i * j) + "\t")if (j == i) println()}}
}

方法三、采用单重循环与流间变量绑定来实现

package net.gxf.day02/*** 功能:单重循环与流间变量绑定打印九九表* 作者:gxf* 日期:2023年02月22日*/
object Example04 {def main(args: Array[String]): Unit = {for (i <- 1 to 9; j <- 1 to i; sep = if (j == i) "\n" else "\t") {print(i.toString + "×" + j + "=" + (i * j) + sep)}}
}

方法四、采用单重循环、流间变量与yield来实现

package net.gxf.day02/*** 功能:采用单重循环、流间变量与yield打印九九表* 作者:gxf* 日期:2023年02月22日*/
object Example05 {def main(args: Array[String]): Unit = {val list = for (i <- 1 to 9; j <- 1 to i; sep = if (j == i) "\n" else "\t")yield i.toString + "×" + j + "=" + (i * j) + seplist.foreach(print)}
}

四、条件循环
(一)while循环
任务1、计算1+ 2 + 3 + … + 100

package net.gxf.day02/*** 功能:等差数列求和* 作者:gxf* 日期:2023年02月23日*/
object Example10 {def main(args: Array[String]): Unit = {var sum = 0var i = 1while (i <= 100) {sum = sum + ii = i + 1}println("1 + 2 + 3 + ... + 100 = " + sum)}
}

- 采用函数式风格来写代码,递归函数来实现求和,注意:此处sum是常量

package net.gxf.day02/*** 功能:等差数列求和* 作者:gxf* 日期:2023年02月23日*/
object Example10_ {def mx(n: Int, sum: Int): Int = {if (n > 0) mx(n - 1, sum + n) else sum}def main(args: Array[String]): Unit = {println("1 + 2 + 3 + ... + 100 = " + mx(100, 0))}
}

任务2、打印全部水仙花数

package net.gxf.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result = if (n % 2 == 0)n.toString + "是偶数~"elsen.toString + "是奇数~"println(result)}
}

(二)do while循环
任务:计算1+ 2 + 3 + … + 100

package net.gxf.day02/*** 功能:等差数列求和* 作者:gxf* 日期:2023年02月23日*/
object Example12 {def main(args: Array[String]): Unit = {var sum = 0var i = 1do {sum = sum + ii = i + 1} while (i <= 100)println("1 + 2 + 3 + ... + 100 = " + sum)}
}

五、异常处理
任务:演示try-catch-finally
- try-catch-finally是有返回值的:如果没有异常就是try语句的返回值,如果有异常就是catch语句的返回值。注意不会是finally的返回值,finally即使有返回值,也会被抛弃,这点和Java是不同的。


六、match结构
案例演示

package net.gxf.day02import scala.io.StdIn/*** 功能:判断奇偶性*/object Example01 {def main(args: Array[String]): Unit = {print("n = ")val n = StdIn.readLine.toIntval result = if (n % 2 == 0)n.toString + "是偶数~"elsen.toString + "是奇数~"println(result)}
}



七、变量作用域
(一)Java变量作用域
- 1、内部能访问外部


- 2、外部不能看内部

(二)Scala变量作用域
- 1、内部不能访问外部

package net.gxf.day02/*** 功能:变量作用域 - 内部能访问外部* 作者:gxf* 日期:2023年03月01日*/
object Example15 {def main(args: Array[String]): Unit = {val message = "欢迎访问醉美泸州~"if (true) {println(message)}}
}

- 2、外部不能访问内部

相关文章:
scala内建控制结构
一、条件表达式 (一)语法格式 - if (条件) 值1 else 值2(二)执行情况 条件为真,结果是值1;条件为假,结果是值2。如果if和else的返回结果同为某种类型,那么条件表达式结果也是那种类…...
Linux SSH命令实战教程,提升你的服务器管理基本功!
前言 大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第62篇文章。 专栏地址:[linux基本功-基础命令专栏] , 此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象&am…...
【Python】Python进阶系列教程-- Python3 CGI编程(二)
文章目录 前言什么是CGI网页浏览CGI架构图Web服务器支持及配置第一个CGI程序HTTP头部CGI环境变量GET和POST方法使用GET方法传输数据简单的表单实例:GET方法使用POST方法传递数据通过CGI程序传递checkbox数据通过CGI程序传递Radio数据通过CGI程序传递 Textarea 数据通…...
do..while、while、for循环反汇编剖析
1、循环语句重要特征提取 循环语句最重要的特点就是执行的过程中会往上跳!!! 箭头往上跳的一般都是循环语句,比如下面的for循环: 2、do..while语句反汇编 #include<iostream> using namespace std; #pragma …...
【代码随想录】刷题Day53
1.最长公共子序列 1143. 最长公共子序列 和之前的一道题目的区别就是这个子序列不需要每个字符相邻。那么条件就变成两种了,一种是当前的字符相同,一种是不同。相同跟之前的条件一样;不同则需要继承上次比较的较大值。if (text1[i - 1] tex…...
MySQL 索引及查询优化总结
一个简单的对比测试 前面的案例中,c2c_zwdb.t_file_count表只有一个自增id,FFileName字段未加索引的sql执行情况如下: 在上图中,typeall,keynull,rows33777。该sql未使用索引,是一个效率非常低…...
什么是AJAX?
AJAX是一种基于Web的技术,它允许Web应用程序在不刷新整个页面的情况下与服务器进行交互。通过AJAX,Web应用程序可以使用JavaScript向服务器发送异步请求并在不干扰用户的情况下更新页面的部分内容。 AJAX是Asynchronous JavaScript and XML的缩写。尽管…...
报表生成器FastReport .Net用户指南:显示数据列、HTML标签
FastReport .Net是一款全功能的Windows Forms、ASP.NET和MVC报表分析解决方案,使用FastReport .NET可以创建独立于应用程序的.NET报表,同时FastReport .Net支持中文、英语等14种语言,可以让你的产品保证真正的国际性。 FastReport.NET官方版…...
bootstrap-dialog弹框,去掉遮盖层,可移动
1.去掉遮盖层的设置data-backdrop"false" <div class"modal fade" id"modal" aria-modal"true" role"dialog" data-backdrop"false" style"width:50%"><div class"modal-dialog modal-l…...
7. user-Agent破解反爬机制
文章目录 1. 为什么要设置反爬机制2. 服务器如何区分浏览器访问和爬虫访问3. 反爬虫机制4. User-Agent是什么5. 如何查询网页的User-Agent6. user-agent信息解析7. 爬虫程序user-agent和浏览器user-agent的区别8. 代码查看爬虫程序的user-agent9. 在代码中加入请求头信息 1. 为…...
3.Nginx+Tomcat负载均衡和动静分离群集
文章目录 NginxTomcat负载均衡和动静分离群集Nginx作用实验七层反向代理nginx动静分离四层反向代理负载均衡 NginxTomcat负载均衡和动静分离群集 Nginx是-款非常优秀的HTTP服务器软件 支持高达50 000个并发连接数的响应拥有强大的静态资源处理能力运行稳定内存、CPU等系统资源…...
数据结构与算法之树结构
目录 为什么要使用树结构树结构基本概念树的种类树的存储与表示常见的一些树的应用场景为什么要使用树结构 线性结构中不论是数组还是链表,他们都存在着诟病;比如查找某个数必须从头开始查,消耗较多的时间。使用树结构,在插入和查找的性能上相对都会比线性结构要好 树结构…...
【python】 用来将对象持久化的 pickle 模块
pickle 模块可以对一个 Python 对象的二进制进行序列化和反序列化。说白了,就是它能够实现任意对象与二进制直接的相互转化,也可以实现对象与文本之间的相互转化。 比如,我程序里有一个 python 对象,我想把它存到磁盘里ÿ…...
【博客654】prometheus配置抓取保护以防止压力过载
prometheus抓取保护配置以防止压力过载 场景 担心您的应用程序指标可能突然激增,以及指标突然激增导致prometheus压力过载 就像生活中的许多事情一样,标签要有节制。当带有用户 ID 或电子邮件地址的标签被添加到指标时,虽然它不太可能结束…...
Backtrader官方中文文档:第十三章Observers观察者
本文档参考backtrader官方文档,是官方文档的完整中文翻译,可作为backtrader中文教程、backtrader中文参考手册、backtrader中文开发手册、backtrader入门资料使用。 本章包含 backtrader 官方Observers章节全部内容,入口 : https://backtrader.com/docu/observers-and-sta…...
算法leetcode|54. 螺旋矩阵(rust重拳出击)
文章目录 54. 螺旋矩阵:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java:每次循环移动一步:每次循环完成一个顺时针:…...
单容水箱建模(自衡单容水箱+无自衡单容水箱)
自衡单容水箱Simulink建模和PLC源代码请参看下面文章链接: 单容双容水箱建模(simulink仿真+PLC代码)_RXXW_Dor的博客-CSDN博客PLC通过伯努利方程近似计算水箱流量详细内容请参看下面的文章博客PLC通过伯努利方程近似计算水箱流量(FC)_怎么用伯努利方程求某水位流量_RXXW_Dor的…...
分享Python7个爬虫小案例(附源码)
本次的7个python爬虫小案例涉及到了re正则、xpath、beautiful soup、selenium等知识点,非常适合刚入门python爬虫的小伙伴参考学习。注:若涉及到版权或隐私问题,请及时联系我删除即可。 1.使用正则表达式和文件操作爬取并保存“某吧”某帖子…...
我用ChatGPT写2023高考语文作文(一):全国甲卷
2023年 全国甲卷 适用地区:广西、贵州、四川、西藏 人们因技术发展得以更好地掌控时间,但也有人因此成了时间的仆人。 这句话引发了你怎样的联想与思考?请写一篇文章。 要求:选准角度,确定立意,明确文体&am…...
c++ modbusTCP
//Modbus TCP是一种基于TCP/IP协议的Modbus协议,它允许Modbus协议通过以太网进行通信。 //在C中,可以使用第三方库来实现Modbus TCP通信,例如libmodbus和QModbus。 //使用libmodbus库实现Modbus TCP通信的示例代码如下: //c #incl…...
解锁数据库简洁之道:FastAPI与SQLModel实战指南
在构建现代Web应用程序时,与数据库的交互无疑是核心环节。虽然传统的数据库操作方式(如直接编写SQL语句与psycopg2交互)赋予了我们精细的控制权,但在面对日益复杂的业务逻辑和快速迭代的需求时,这种方式的开发效率和可…...
系统设计 --- MongoDB亿级数据查询优化策略
系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log,共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题,不能使用ELK只能使用…...
c#开发AI模型对话
AI模型 前面已经介绍了一般AI模型本地部署,直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型,但是目前国内可能使用不多,至少实践例子很少看见。开发训练模型就不介绍了&am…...
全面解析各类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…...
是否存在路径(FIFOBB算法)
题目描述 一个具有 n 个顶点e条边的无向图,该图顶点的编号依次为0到n-1且不存在顶点与自身相连的边。请使用FIFOBB算法编写程序,确定是否存在从顶点 source到顶点 destination的路径。 输入 第一行两个整数,分别表示n 和 e 的值(1…...
Webpack性能优化:构建速度与体积优化策略
一、构建速度优化 1、升级Webpack和Node.js 优化效果:Webpack 4比Webpack 3构建时间降低60%-98%。原因: V8引擎优化(for of替代forEach、Map/Set替代Object)。默认使用更快的md4哈希算法。AST直接从Loa…...
宇树科技,改名了!
提到国内具身智能和机器人领域的代表企业,那宇树科技(Unitree)必须名列其榜。 最近,宇树科技的一项新变动消息在业界引发了不少关注和讨论,即: 宇树向其合作伙伴发布了一封公司名称变更函称,因…...
Qemu arm操作系统开发环境
使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...
协议转换利器,profinet转ethercat网关的两大派系,各有千秋
随着工业以太网的发展,其高效、便捷、协议开放、易于冗余等诸多优点,被越来越多的工业现场所采用。西门子SIMATIC S7-1200/1500系列PLC集成有Profinet接口,具有实时性、开放性,使用TCP/IP和IT标准,符合基于工业以太网的…...
Docker拉取MySQL后数据库连接失败的解决方案
在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...
