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

下载免费网站模板下载/市场调研分析

下载免费网站模板下载,市场调研分析,英文互动网站建设,赌博游戏网站开发1.8 表达式(重点) # 语句(statement):一段可执行的代码# 表达式(expression):一段可以被求值的代码,在Scala中一切都是表达式 - 表达式一般是一个语句块,可包含一条或者多条语句,多条语句使用“…

1.8 表达式(重点)
# 语句(statement):一段可执行的代码
# 表达式(expression):一段可以被求值的代码,在Scala中一切都是表达式
- 表达式一般是一个语句块,可包含一条或者多条语句,多条语句使用“{}”包含,语句间以“;”分隔,称为块表达式
- 表达式有返回值

表达式和语句有什么区别:

1.表达式有返回值,语句被执行。表达式一般是一个语句块,执行后,返回一个值

scala> if(true) "true string" else "false string"
res4: String = true string
scala> if(false) 5 else "hello"
res5: Any = hello

2.不使用return语句,最后一个表达式即返回值

scala> var i=0  //可以认为是var i={0}  
i: Int = 0
​
scala> val a={ i=i+1 }  //块表达式中最后一条赋值语句返回了"()"值,它是一个Unit类型
a: Unit = ()
​
scala> val a={ i=i+1;i=i+1;i } //块表达式中最后一条语句返回i的值作为表达式的值
a: Int = 2

如果用return会发生什么?

scala> if (i>10) 100 else  -100     
scala> if (i>10) return 100 else return -100
<console>:9: error: return outside method definitionif (i>10) return 100 else return -100
1.8.1 if分支条件表达式

if-else表达式有值,这个值就是跟在if或者else之后的表达式的值。

1.单分支

基本语法

if (条件表达式) {执行代码块}

说明:当条件表达式为ture 时,就会执行 { } 的代码。

val x = 1
//如果缺失else,相当于if(x>2) 1 else ()
//返回类型是AnyVal
//如果进行类型判断和转换,可以使用:
//var b = if(m.isInstanceOf[Int]) m.asInstanceOf[Int] else 0
val m = if(x>2) 1
println(m)
​
//在scala中,每个表达式都有值,scala中有个unit类,写作(),相当于Java中的 void
val n = if(x>2) 1 else ()
println(n)

2.双分支

基本语法

if (条件表达式) {执行代码块1 } else { 执行代码块2 }

说明:当条件表达式成立,即执行代码块1,否则执行代码块2.

var x = 1
//将if/else表达式值赋给变量y
val y = if (x > 0 ) 1 else -1
println(y)

3.多分支

基本语法

if (条件表达式1) {   执行代码块1  }   
else if (条件表达式2) {  执行代码块2  }
……      
else {执行代码块n }

示例:

//if 嵌套
val  k= if(x<0) 0 else if (x>=1) 1 else -1
println(k)

混合类型表达式

//支持混合型表达式
//返回类型是Any
val z = if(x>0) "success"  else  -1
println(z)

代码

package com.qianfeng.scala
​
/*** 代码块* 1、代码块中最后一行的值作为返回值;如果最后一行为print()、赋值等语句则返回()* 2、所有代码中最后一行无需加retur语句就可以返回* 3、if() 该语句也默认有else ()*/
object Demo03_CodeBlock {def main(args: Array[String]): Unit = {//代码块val a1 = {val a = 10val b = 20a+b}println(a1)val a2 = {val a = 10val b = 20var c = 300c = a + b}println(a2)
​//if() elseval age = 17val ag1 = if(age>=18) "成年"println(ag1)val ag2 = if(age>=18) "成年" else 0println(ag2)val ag3 = if(age>=18) "成年" else {"0"println("aaa")}println(ag3)
​}
}

小结:

# 1.每个表达式都有一个类型
# 2.条件表达式有值
# 3.混合型表达式,结果是Any或者AnyVal
# 4.Scala没有switch语句,但是有更强大的模式匹配
1.8.2 循环表达式

在Scala中有for循环和while循环,用for循环比较多。

1.for循环

for循环语法结构:

for(i <- 表达式)

i <- 表达式 称为生成器,可从集合中取出每个元素。与Java类似,表达式的值必须为可遍历的迭代器Iterator[Any],包括数组、集合(Range、List、Seq……)等。以Range为例,Range表示一种区间类型,常用的两种创建方式为:tountil

val (i,j)=(1,10)
i to j      //(包含i和j)
i.to(j)
i until j   // (包含i,但不包含j) 
i.until(j)
for(n <- i to j) println(n)

for循环嵌套:for语句中可以有多个生成器

for (i <- 1 to 3; j <- 1 to 3) print ((10 * i +j) + " ")

for循环过滤器:也称循环守卫

for (i <- 1 to 3; j <- 1 to 3; if (i != j)) print ((10 * i + j) + " ")
for (i <- 1 to 3; j <- 1 to 3; if(i != j);if(j<3)) print ((10 * i + j) + " ")
for (i <- 1 to 3; j <- 1 to 3  if i != j  if j<3) print ((10 * i + j) + " ")

yield循环体:也称for推导式。Scala中的yield的主要作用是记住每次迭代中的有关值,并逐一存入到一个数组中。 用法如下:

for {子句} yield {变量或表达式}
lazy val retVal=for ( i <- 1 to 10; if i%2==0;if i>5 ) yield i
​
for(a<-retVal){println(a);
}

示例:

object ForDemo def main(args: Array[String]){//每次循环将区间的一个值赋给ifor( i <- 1 to 10)println(i)for( i <- 1 until 10)println(i)
​//for i <-数组val arr = Array("a", "b", "c")for( i <- arr)println(i)
​val s = "hello"for(i <- 0 until s.length){println(s(i))}//  或者//  for(c <- s)println(c)  //  或者//  for(i <- 0 until s.length){//  println(s.charAt(i))// }//高级for循环(嵌套循环加过滤功能)for(i <- 1 to 3 ; j<- 1 to 3 if i != j){print((10*i + j) + "")println()}//for推导式,如果for循环的循环体以yeild开始,则该循环会构建出一个集合或者数组,每次迭代生成其中一个值。val v= for ( i <- 1 to 10 )yield i*10println (v)}
}

2.while循环和do...while循环

while循环语法:

while (条件语句){表达式}

do...while循环语法

do{表达式}while(条件语句)

//求和
//while实现
val i=1     
var sum = 0
while(i<=10){sum += ii += 1
}
println(sum)
//do ... while实现
do {sum += ii += 1
}while (i>=10)

完整代码

package com.qianfeng.scala
​
/*** 循环*/
object Demo04_ForAndWhile {def main(args: Array[String]): Unit = {//单层循环for (i <- 1 to 10)print(i+"\t")
​println()for (i <- 1.until(10))print(i+"\t")println()
​
​//双重循环for (i <- 1 to 3;j <- 1 to(3))print(i*100+j+"\t")
​//双重循环,并加过滤条件;多层循环之间需要使用;分割,而条件判断部分不需要也可以println()for (i <- 1 to 3; j<-1 to 3;if(i !=j))print(i*100+j+"\t")println()
​//推倒式val res = for (i <- 1 to 10;if (i%2==0)) yield i*10for (i<-res)print(i+"\t")println()
​//集合循环for (i <- Array(1,2,5,6,3))print(i+"\t")println()
​//while循环var sum = 0while (sum < 10){sum += 1print(sum +"\t")}println()
​//do whilevar i = 0do {i += 1print(i+"|")} while (i >= 10)println()}
}

3.循环停止的三种方式

# 1.使用return
# 2.使用Boolean变量
# 3.使用breakable块

示例:

object BreakLoopDemo {def main(args: Array[String]): Unit = {//方式2 使用Boolean变量 这个方式只能使用在while或do-while中,for也行但是需要加守卫ifvar flag = truevar n = 0 //计数while(flag){  //死循环//让n自增n += 1println(n)if(n == 10){flag = false}         } //for循环版var flag1 = truefor(i <- 0 to 10 if  flag){println(i)if (i == 7){flag1 = false}}//方式3 使用breakable块//Scala中是没有break和continue关键字//想使用break,必须导入一个包//正在Scala认为位置都可以导入包   _ 相当于Java导入包是的*import  scala.util.control.Breaks._breakable{ //使用break块for(i <- 1 to 10){if( i == 7){break}}} }
}

Guff_hys_python数据结构,大数据开发学习,python实训项目-CSDN博客 

相关文章:

scala表达式

1.8 表达式&#xff08;重点&#xff09; # 语句(statement)&#xff1a;一段可执行的代码# 表达式(expression)&#xff1a;一段可以被求值的代码&#xff0c;在Scala中一切都是表达式 - 表达式一般是一个语句块&#xff0c;可包含一条或者多条语句&#xff0c;多条语句使用“…...

uniapp,点击选中并改变颜色,第二次点击取消选中状态

一、效果图 二、代码实现 字符串的indexOf和数组的indexOf用法一致&#xff01; arr.indexOf(item) 该方法返回某个元素在数组中的位置。若没检索到&#xff0c;则返回 -1。 关键代码&#xff1a;(通过:class绑定) :class"selectList.indexOf(sub.type) ! -1 ? right_ite…...

mmyolo的bbox_loss和检测bbox都是空

最近用mmyolo训练自己的数据集的时候发现训练的时候loss_bbox0&#xff0c;测试和eval的时候结果也全是空的&#xff0c;排除了数据集读取的问题&#xff0c;最后发现是config中自定义了自己的类别但是没有传给dataset。。。 简而言之&#xff0c;在自定义了数据集里的metainf…...

Linux——基本指令(二)

​ 个人主页&#xff1a;日刷百题 系列专栏&#xff1a;〖C语言小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 &#x1f30e;欢迎各位→点赞&#x1f44d;收藏⭐️留言&#x1f4dd; ​ ​ 写在前面&#xff1a; 紧接上一章&#xff0c;我们在理解接下来的命令之前&#xff0c…...

渲染农场对工业产品渲染带来的意义与优势?

随着科技的进步&#xff0c;利用精细渲染图来呈现和推广工业设计的创新已成为行业标准。这些图像在产品研发、设计评审和营销阶段起着关键作用&#xff0c;同时对产品最终的成功也产生深远影响。然而&#xff0c;由于产品设计日渐复杂&#xff0c;制作渲染图的任务变得极具挑战…...

产品入门第二讲:Axure产品元件库的使用

&#x1f4da;&#x1f4da; &#x1f3c5;我是默&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; ​​​​ &#x1f31f;在这里&#xff0c;我要推荐给大家我的专栏《Axure》。&#x1f3af;&#x1f3af; &#x1f680;无论你是编程小白&#xff0c;还是…...

(第7天)Linux 静默安装单机 Oracle 19C 数据库

Linux 静默安装安装单机 Oracle 19C 数据库(第7天) 很多朋友经常会问,如果生产环境不允许安装 Linux 图形化界面怎么办?是不是有其他的方式来安装部署 Oracle 数据库呢?答案是肯定的! 我们可以通过命令行的方式来静默安装,不调用图形化界面,当然也就没有那么简单了!…...

智能优化算法应用:基于入侵杂草算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于入侵杂草算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于入侵杂草算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.入侵杂草算法4.实验参数设定5.算法结果6.…...

数据挖掘目标(Kaggle Titanic 生存测试)

import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns1.数据导入 In [2]: train_data pd.read_csv(r../老师文件/train.csv) test_data pd.read_csv(r../老师文件/test.csv) labels pd.read_csv(r../老师文件/label.csv)[Su…...

【Vue】router.push用法实现路由跳转

目录 router.push用法 在Login.vue中 在Register.vue中 ​ 上一篇&#xff1a;登录与注册界面的制作 https://blog.csdn.net/m0_67930426/article/details/134895214?spm1001.2014.3001.5502 制作了登录与注册界面&#xff0c;并介绍了相关表单元素即属性的用法 在登录页面…...

设计原则 | 接口隔离原则

一、接口隔离原则 1、原理 客户端不应该依赖它不需要的接口&#xff0c;即一个类对另一个类的依赖应该建立在最小的接口上。如果强迫客户端依赖于那些它们不使用的接口&#xff0c;那么客户端就面临着这个未使用的接口的改变所带来的变更&#xff0c;这无意间导致了客户程序之…...

maui 调用文心一言开发的聊天APP 3

主要是对代码进行了优化 上一个版本写死了帐号跟密码 &#xff0c;这一个帐本有户可以直接设置对相关的key以及secret如果设置错时&#xff0c;在聊天中也会返回提示。注册帐号时同时也设置了key及secrete升级到了net.8.0导出APK&#xff0c;上一个版本是导出abb.解决了变型问…...

鸿蒙开发 - ohpm安装第三方库

前端开发难免使用第三方库&#xff0c;鸿蒙亦是如此&#xff0c;在使用 DevEco Studio 开发工具时&#xff0c;如何引入第三方库呢&#xff1f;操作步骤如下&#xff0c;假设你使用的是MacOS&#xff0c;假设你已经创建了了一个项目&#xff1a; 一、配置 HTTP Proxy 在打开了…...

[C++] new和delete

使用new时调用构造函数使用delete时调用析构函数 构造函数 使用new动态分配内存时&#xff0c;如果分配的是基本类型的内存&#xff0c;则不会调用构造函数。如果分配的是自定义类型的内存&#xff0c;则会调用构造函数进行对象的初始化。 例如&#xff1a; int* pInt new…...

OpenVINS学习2——VIRAL数据集eee01.bag运行

前言 周末休息了两天&#xff0c;接着做上周五那个VIRAL数据集没有运行成功的工作。现在的最新OpenVINS需要重新写配置文件&#xff0c;不像之前那样都写在launch里&#xff0c;因此需要根据数据集情况配置好estimator_config.yaml还有两个标定参数文件。 VIRAL数据集 VIRAL…...

jemeter,断言:响应断言、Json断言

一、响应断言 接口A请求正常返回值如下&#xff1a; {"status": 10013, "message": "user sign timeout"} 在该接口下创建【响应断言】元件&#xff0c;配置如下&#xff1a; 若断言成功&#xff0c;则查看结果树的接口显示绿色&#xff0c;若…...

【vue实战项目】通用管理系统:信息列表,信息的编辑和删除

本文为博主的vue实战小项目系列中的第七篇&#xff0c;很适合后端或者才入门的小伙伴看&#xff0c;一个前端项目从0到1的保姆级教学。前面的内容&#xff1a; 【vue实战项目】通用管理系统&#xff1a;登录页-CSDN博客 【vue实战项目】通用管理系统&#xff1a;封装token操作…...

基于FPGA的视频接口之高速IO(光纤)

简介 对于高速IO口配置光纤,现在目前大部分开发板都有配置,且也有说明,在此根据自己的工作经验以及对于各开发板的说明归纳 通过高速IO接口,以及硬件配置,可以实现对于光纤的收发功能,由于GTX的速率在500Mbs到10Gbps之间,但通道高速io可配置光纤10G硬件,物理通完成,则…...

HTML实现页面

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>工商银行电子汇款单</title> </head> &…...

回归预测 | MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测(多指标,多图)

回归预测 | MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测&#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现IWOA-LSTM改进鲸鱼算法算法优化长短期记忆神经网络的数据回归预测&#xff08;多指标&#xff0c;多图&#…...

鸿蒙开发之状态管理@State

1、视图数据双向绑定 鸿蒙开发采用的声明式UI&#xff0c;利用状态驱动UI的更新。其中State被称作装饰器&#xff0c;是一种状态管理的方式。 状态&#xff1a;指的是被装饰器装饰的驱动视图更新的数据。 视图&#xff1a;是指用户看到的UI渲染出来的界面。 之所以成为双向…...

redis基本用法学习(主要数据类型)

redis官网教程中介绍有三种方式连接redis&#xff1a;命令行、gui工具和编程连接&#xff1a;   命令行方式主要是在命令行中输入redis-cli后&#xff0c;通过命令方式与redis服务进行交互&#xff0c;支持两种模式&#xff1a;REPL模式&#xff08;简单的交互式的编程环境&a…...

低代码:美味膳食或垃圾食品

低代码开发是近年来迅速崛起的软件开发方法&#xff0c;让编写应用程序变得更快、更简单。有人说它是美味的膳食&#xff0c;让开发过程高效而满足&#xff0c;但也有人质疑它是垃圾食品&#xff0c;缺乏定制性与深度。你认为低代码到底是美味的膳食还是垃圾食品呢&#xff0c;…...

设计模式—观察者模式

观察者模式&#xff08;Observer Pattern&#xff09;是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;使得当一个对象的状态发生变化时&#xff0c;所有依赖于它的对象都会得到通知并自动更新。 在观察者模式中&#xff0c;有两个核心角色&#xf…...

Java_EasyExcel_导入_导出Java-js

easyExcel导入 从easyexcel官网中拷贝过来&#xff0c;使用到的&#xff0c;这是使用监听器的方法。 EasyExcel.read(file.getInputStream(), BaseStoreDataExcelVo.class, new ReadListener<BaseStoreDataExcelVo>() {/*** 单次缓存的数据量*/public static final int…...

循环神经网络-RNN记忆能力实验 [HBU]

目录 一、循环神经网络 二、循环神经网络的记忆能力实验 三、数据集构建 数据集的构建函数 加载数据并进行数据划分 构造Dataset类 四、模型构建 嵌入层 SRN层 五、模型训练 训练指定长度的数字预测模型 多组训练 损失曲线展示 六、模型评价 参考《神经网络与深度…...

P1044 [NOIP2003 普及组] 栈——卡特兰数

传送门&#xff1a; P1044 [NOIP2003 普及组] 栈 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P1044 公式一&#xff1a;递推式(注意开 long long &#xff0c;然后 先乘完再除&#xff0c;防止下取整&#xff09; typedef long long ll;…...

9:00面试,9:06就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到12月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40…...

ets:tab2list的不足之处与替代方法,以及gen_server中使用ets的优缺点

ets:tab2list 是 Erlang/OTP 中的一个函数&#xff0c;用于将 ETS&#xff08;Erlang Term Storage&#xff09;表转换为列表。ETS 是 Erlang 中的一个内建数据库&#xff0c;允许开发者在内存中存储大量数据。 一、ets:tab2list 的不足之处&#xff1a; 性能问题&#xff1a;…...

软件测试之压力测试详解

一、什么是压力测试 软件测试中&#xff1a;压力测试&#xff08;Stress Test&#xff09;&#xff0c;也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷&#xff0c;长时间或超大负荷地运行测试软件&#xff0c;来测试被测系统的性能、…...