scala基础入门
一、Scala安装
下载网址:Install | The Scala Programming Language
ideal安装
(1)下载安装Scala plugins
(2)统一JDK环境,统一为8
(3)加载Scala
(4)创建工程吧 ^_^
(5)windows+Q,查看是否有Scala
二、Scala常规知识点
(一)Scala初体验
object ScalaTest {def main(args: Array[String]): Unit = {println("hello scala!")}
}
//hello scala!
(二)var 变量、val 常量、Type关键字
// var 变量var name :String="lisi"println("hi " + name) //hi lisiname = "xioaming"println("hi " + name) //hi xioaming
// val 常量val pai = 3.1415926var r =10println("圆的面积:" + pai*r*r) //圆的面积:314.15926
// type关键字:给别名type T=Stringval name:T="java"println( name ) //java
(三)Scala数据类型结构
Any:所有类型的超类(顶级类型)
AnyVal:表示值类型的超类
AnyRef:表示引用类型的超类,对应java.lang.Object
Unit:表示无值,类似于Java中的void
Nothing:所有类型的子类
Null:表示null或空引用
scala与java有着相同的原始数据类型(Byte,Short,Int,Long,Float,Double,Char,Boolend,String)
(四)字符串插值器
(1)S插值器:允许将变量引用、表达式直接插入字面字符中
(2)F插值器
(3)raw插值器
(4)拓展:Scala中值是多少取决于最后一个数据
//(1)s插值器:允许将变量引用、表达式直接插入字面字符中var name = "huahua"println(s"hello $name") //hello huahua//(2)f插值器:允许将变量引用、表达式直接插入字面字符中var pai=3.1415926/* 10个空格 保留小数点两位| | */println(f"派的值为:$pai%10.2f") //派的值为: 3.14//(3)raw插值器println(s"\n b") // b 换行println(raw"\n b") //\n b 不转义//(4)拓展:Scala中值是多少取决于最后一个数据var name = {"唐僧"println("请输出名字:") //请输出名字:"李白一日游"}println(name) //李白一日游
(五)Scala条件控制
(1)if
语法结构:if ( ){ } else if ( ){ } else { }
val age = 18if(age > 18){println("成年人")}else if (age == 18){println("18一枝花")}else{println("受未成年人保护法保护") }//18一枝花
提升版
var age = {println("我是一个代码块,最后一个指令代表返回值")991133}println(s"调用代码块值:$age") //调用代码块值:33var resoultAge=if(age > 33) age -1 else if (age < 18 ) age +1 else ageprintln(resoultAge) //33
(2)while
语法结构:while(){ }
var num = 5while ( num <10 ){println(num)num = num+1}
// 5
// 6
// 7
// 8
// 9
(3) do while
语法结构:do { } whiel ( )
var num = 5do{println(num)num=num+1}while(num<10)
/* 56789*/
(4)for
语法结构( ){ }
var num = 4for( i<-1 to num){println(i)}
/* 1234*/
拓展:步长
var num = 5
// 步长为2for( i<-1 to num by 2){println(i)}
/* 135*/
// 步长为5for( i<-1 to num by 5){println(i)}
/*1*/
(5)小试牛刀
Ⅰ、打印正三角形
var num = 10for(i<-1 to num){for (j<-1 to i){print("*")}println()}*
**
***
****
*****
******
*******
********
*********
**********
Ⅱ、打印等边三角形
var num = 10for(i<-1 to num){for (j<-1 to num-i){print(" ")}for (j<-1 to 2*i-1){print("*")}println()}*********************************************************************************
*******************
Ⅲ、打印倒三角形
var num = 10for(i<-1 to num){for (j<-1 to num-i){print("*")}println()}
*********
********
*******
******
*****
****
***
**
*var num = 10for(i<-1 to num){for (j<-1 to i){print(" ")}for (j<-1 to num-i){print("*")}println()}*********************************************
Ⅳ、打印倒等边三角形
var num = 10for(i<-1 to num){for (j<-1 to i){print(" ")}for (j<-1 to 2*(num-i)-1){print("*")}println()}*********************************************************************************
Ⅴ、三角形抠边
var num = 10for(i<-1 to num){for (j<-1 to num-i){print(" ")}for (j<-1 to 2*i-1){if (i == 1 || i == num || j == 1 || j == 2*i-1){print("*")}else{print(" ")}}println()}** ** ** ** ** ** ** ** *
*******************
(6)拓展:break
import scala.util.control._var num = 10val breakA = new BreaksbreakA.breakable{for (i <-1 to 10 by 2){if (i>5){breakA}println (i)}}/* 13579*/import scala.util.control.Breaks._var num = 20for(i<-1 to num by 2){if (i>5){break()}println(i)}/* Exception in thread "main" scala.util.control.BreakControl135*/
(六)迭代器
// yield:表示当for循环之后将所有值返回给resultvar num = 12for (i <-1 to num ;if i%2==0;if i>5 ;if i%3 == 0){println(i)}
/* 612*/var result = for ( i <-1 to num ; if i%2==0;if i>5 ;if i%3 == 0 ) yield ival it : Iterator[Int]= result.iteratorwhile (it.hasNext){println("迭代器:"+ it.next()) //6,12}
/* 迭代器:6迭代器:12*/
/// 【增强for循环-----不推荐使用】for (re<- result){println("for循环取值:"+ re)
/* for循环取值:6for循环取值:12*/}println(result)println(result(0))println(result(1))
/* Vector(6, 12)612*/
(七)数组
// 创建数组的方式一 var arr = new Array[String](3)arr(0)="华为met 50"arr(1)="华为met 60"arr(2)="华为met 70"for(i<-0 until arr.length){println(arr(i))}
// 创建数组的方式二 调用,伴生对象var arr=Array("华为met50","华为met60","华为met70")for (i<-0 until arr.length){println(arr(i))}
// 创建数组的方式3 区间数组val arr : Array[Int]=Array.range(1,10)val arr : Array[Int]=Array.range(1,10,2)println("length"+arr.length)for(i <-0 to arr.length-1){println(arr(i))}
(八)元组
(1)定义了三个元组,第四个报错 val tp = ( "hello",3.14 , 39 ) println("元组的第一个元素"+tp._1)println("元组的第二个元素"+tp._2)println("元组的第三个元素"+tp._3)println("元组的第四个元素"+tp._4)(2)输出:scalaval tp2=("A",2,'a',4,"scala",6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)println(tp2._5)(3)最多22个,超过22个报错val tp2=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)//Error:(253, 17) too many elements for tuple: 25, allowed: 22// val tp2=(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)(4)定义三种类型元组println(new Tuple3[Boolean,Double,Int](true,3.24,100))//(true,3.24,100)(5)遍历元组val tp4=("A",2,'a',4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22)【方式一】val iterator : Iterator[Any] = tp4.productIteratorfor (elem<-iterator){println(elem)}【方式二】tp4.productIterator.foreach(x=>println(x))
(九)可变集合
val list1 = scala.collection.immutable.List(1,3,6)list1.foreach(println)
// lamda函数list1.foreach( x =>println(x))val ints = List(1,2,4)println(ints.getClass)val builder: StringBuilder= ints.addString(new StringBuilder("1234"))println("------------------------------")val int2:List[Int]=ints.drop(1)int2.foreach(println(_))println("------------------------------")ints.foreach(println(_))println("------------------------------")
(十)不可变集合
val list = scala.collection.mutable.ListBuffer(1,3,6)println(list(2))
相关文章:
scala基础入门
一、Scala安装 下载网址:Install | The Scala Programming Language ideal安装 (1)下载安装Scala plugins (2)统一JDK环境,统一为8 (3)加载Scala (4)创建工…...
【Java-LangChain:面向开发者的提示工程-5】推断
第五章 推断 推断任务可以看作是模型接收文本作为输入,并执行某种分析的过程。其中涉及提取标签、提取实体、理解文本情感等等。如果你想要从一段文本中提取正面或负面情感,在传统的机器学习工作流程中,需要收集标签数据集、训练模型、确定如…...
【C++】手撕vector(vector的模拟实现)
手撕vector目录: 一、基本实现思路方针 二、vector的构造函数剖析(构造歧义拷贝构造) 2.1构造函数使用的歧义问题 2.2 vector的拷贝构造和赋值重载(赋值重载不是构造哦,为了方便写在一起) 三、vector的…...
智能指针那些事
《Effective Modern C》学习笔记之条款二十一:优先选用std::make_unique和std::make_shared,而非直接new - 知乎...
Fiddler抓取手机https包的步骤
做接口测试时,有时我们需要使用fiddler进行抓包分析,那么如何抓取https包。主要分为以下七步: 1.设置fiddler选项:Tools->Options,按如下图勾选 2.下载并安装Fiddler证书生成器 下载地址:http://www.telerik.com/…...
idea没有maven工具栏解决方法
背景:接手的一些旧项目,有pom文件,但是用idea打开的时候,没有认为是maven文件,所以没有maven工具栏,不能进行重新加载pom文件中的依赖。 解决方法:选中pom.xml文件,右键 选择添加为…...
levelDB引擎
一、背景 1.1、影响磁盘性能的因素: 主要受限于磁盘的寻道时间,优化磁盘数据访问的方法是尽量减少磁盘的IO次数。磁盘数据访问效率取决于磁盘IO次数,而磁盘IO次数又取决于数据在磁盘上的组织方式。磁盘数据存储大多采用B树类型数据结构&…...
IM同步服务
设计概述 后台同步方案的设计就是数据存储结构的设计,如何快速体现“信息变化”,如何快速计算出“变化信息”。后台数据存储结构是由同步协议中同步契约决定的。 设计方案 该方案的同步是按照业务粒度来划分,只需要同步sdk要求同步的数据。…...
MySQL 运维常用脚本
常用功能脚本 1.导出整个数据库 mysqldump -u 用户名 -p –default-character-setlatin1 数据库名 > 导出的文件名(数据库默认编码是latin1) mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql 2.导出一个表 mysqldump -u 用户名 -p 数据库名 表名> 导出的文件…...
ABC322刷题记
ABC322刷题记 T1.A A - First ABC 2。 妥妥的简单题…… 用find函数做就行。(如果不存在那个子串就返回-1,否则返回第一次出现位置) 注意题目中编号是从1开始的。 时间复杂度:O(log(n))。find函数有一定代价,我记…...
visual studio的安装及scanf报错的解决
visual studio是一款很不错的c语言编译器 下载地址:官网 点击后跳转到以下界面 下滑后点击下载Vasual Sutdio,选择社区版即可 选择位置存放下载文件后,即可开始安装 安装时会稍微等一小会儿。然后会弹出这个窗口,我们选择安装位…...
React生命周期
React的生命周期主要是指React组件从创建到销毁的过程,包括三个阶段:挂载期(实例化期)、更新期(存在期)、卸载期(销毁期) 挂载期: constructor(props&#…...
SpringBoot整合RocketMQ笔记
SpringBoot版本为2.3.12.Release RocketMQ对比kafka 学习链接 https://zhuanlan.zhihu.com/p/335216381 代码实战 https://www.cnblogs.com/RedOrange/p/17401238.html Centos安装rocketmq https://blog.csdn.net/chuige2013/article/details/123783612 RocketMQ详细配置与…...
【【萌新的RiscV学习之在写代码之前对于关键路径的分析-11】】
萌新的RiscV学习之在写代码之前对于关键路径的分析-11 首先我们最简单的control 模块 全分段 因为只有分段 , 分开使用之后 , 各个阶段的具体功能才会合理使用 就像是为了后续 “气泡” 赋值 为 0 还有单独比较前递这种 EX : ALUOP ALUSrc …...
A. Sequence with Digits
题目:样例: 输入 8 1 4 487 1 487 2 487 3 487 4 487 5 487 6 487 7输出 42 487 519 528 544 564 588 628 思路: 暴力模拟题,看这数据范围,有些人可能会被唬住,以为是高精度或者容易超时,实际上…...
gitlab配置webhook限制提交注释
一、打开gitlab相关配置项 vim /etc/gitlab/gitlab.rb gitlab_shell[custom_hooks_dir] "/etc/gitlab/custom_hooks" 二、创建相关文件夹 mkdir -p /etc/gitlab/custom_hooks mkdir -p /etc/gitlab/custom_hooks/post-receive.d mkdir -p /etc/gitlab/custom_h…...
蓝桥杯Python scratch C++选拔赛stema个人如何报名?
如果不会操作,可以微信makytony协助。...
Cesium实现动态旋转四棱锥(2023.9.11)
Cesium实现动态悬浮旋转四棱锥效果 2023.9.11 1、引言2、两种实现思路介绍2.1 思路一:添加已有的四棱锥(金字塔)模型实现(简单但受限)2.2 思路二:自定义四棱锥几何模型实现(复杂且灵活ÿ…...
2023最新PS(photoshop)Win+Mac免费下载安装包及教程内置AI绘画-网盘下载
2023最新PS(photoshop)WinMac免费下载安装包及教程内置AI绘画-网盘下载 2023最新PS(photoshop)免费下载安装教程来咯~ 「PhotoShop」全套,winmac: https://pan.quark.cn/s/9d8d8ef5c400#/list/share 所有版本都有 1,复制链接…...
【JAVA】为什么要使用封装以及如何封装
个人主页:【😊个人主页】 系列专栏:【❤️初识JAVA】 前言 Java的封装指的是在一个类中将数据和方法进行封装,使其可以保护起来,只能在该类内部访问,而不允许外部直接访问和修改。这是Java面向对象编程的三…...
18.示例程序(编码器接口测速)
STM32标准库开发-各章节笔记-查阅传送门_Archie_IT的博客-CSDN博客https://blog.csdn.net/m0_61712829/article/details/132434192?spm1001.2014.3001.5501 main.c #include "stm32f10x.h" // Device header #include "Delay.h" #incl…...
【超详细】Fastjson 1.2.24 命令执行漏洞复现-JNDI简单实现反弹shell(CVE-2017-18349)
前言: 看了很多别人关于漏洞复现过程,很多博客过程简洁,有的过程过于复杂,比如看到写java代码,用javac进行编译等等。所以我想写出比较详细的漏洞复现过程。 一,漏洞介绍 1-1 fastjson是什么 fastjson是…...
【牛客网】JZ39 数组中出现次数超过一半的数字
题目 思路 思路1 将数组排序,再保证有结果的情况下,此时数组中间的数字就是想要的结果 思路2 在保证有结果的情况下,此时数组的的众数是数组长度的一半以上 所以我们可以通过抵消的做法来找到最终的结果 我们可以从头遍历这个数组,如果两个数不相同,则消去这两个数,最坏的…...
【Mysql】Lock wait timeout exceeded; try restarting transaction
出现这种问题通常是有事务长时间未提交导致的 可以使用以下sql 查询事务进程 然后通过 kill 线程ID 的方式 ,结束该事务 SELECTtrx_id AS 事务ID,trx_mysql_thread_id AS 线程ID,trx_state AS 事务状态,trx_started AS 开始时间,trx_tables_locked AS 锁定的表,trx_query AS …...
python生成中金所期权行权价
参考沪深300股指期权的合约表,写一个工具函数: 使用方法 def get_format_option_gap(value: float, deviation: int 0): # 根据中证1000指数获取点位"""根据标准的行权价,生成不同档位的期权列表,适合中金所:…...
CentOS7.9 安装postgresql
# 添加postgres账户 sudo groupadd postgres sudo useradd -g postgres postgres # 修改postgres账号密码 passwd postgres # 安装postgresql cd ~tar zxvf postgresql-15.3.tar.gz cd postgresql-15.3./configure --prefix/usr/local/pgsql --without-readlinemake -j4 …...
qt线程介绍
目录 介绍 线程类 QThread 方式1 方式2 案例 线程资源释放 介绍 qt为多线程提供了完美的支持,实现多线程一般是从从QTHread中继承定义自己的线程类,QT也提供了QMutexLocker,QwaitCondition等类实现线程同步,与Linux系统或C中的线程库类似…...
记一次用dataframe进行数据清理
总结一下dataframe读取数据库,以及整理数据的过程。分为三个部分:数据读取,数据整理以及数据写入。 1、数据读取 从csv读取读取数据,使用pandas读的read_csv函数,传入两个参数,分别是path文件路径&#x…...
《Jetpack Compose从入门到实战》 第二章 了解常用UI组件
目录 常用的基础组件文字组件图片组件按钮组件选择器组件对话框组件进度条组件 常用的布局组件布局Scaffold脚手架 列表 书附代码 Google的图标库 常用的基础组件 文字组件 Composable fun TestText() {Column(modifier Modifier.verticalScroll(state rememberScrollState…...
Vue3 引入使用 vant组件详解
目录 Vue3 引入使用 vant组件详解1.安装2.引入2.1 全局引入2.2 按需引入2.2.1 vite项目:vite.config.js2.2.2 Webpack项目:webpack.config.js2.2.3 配置在vue.config.js中 3.使用 Vue3 引入使用 vant组件详解 Vant是一个强大的移动端组件库,目前Vant 官…...
那个网站使用bs做的/搜索关键词热度
2016年4月11日作业 一、法律法规和标准规范1、中国标准划分为哪四个层次?要求最低的是哪个?国家标准、行业标准、地方标准和企业标准,其中要求最低的是国家标准。2、国家标准的制订程序包括哪些?前期准备、立项、起草、征求意见、…...
北京疫情防控网络发布预告/上海官网seo
面向网络游戏的“云”应用平台浅析——2009-1-15 CTO俱乐部第一次聚会“云计算”后记 CTO俱乐部第一次聚会的主题是“云计算”,关于聚会的概述发表在: 2009-1-15 CTO俱乐部第一次聚会,http://blog.csdn.net/hu_zhenghui/archive/2009/01/1…...
公司网站在哪里做/百度搜索引擎的网址是
今天,刚好碰到服务器C盘空间满的情况,首先处理了临时文件和有关的日志文件后空间还是不够用,我知道清理C盘的方法有很多,但今天只分享一下如何在Windows Server 2008 R2没有磁盘清理工具的情况下使用系统提供的磁盘清理工具。 一、…...
什么是网站主机/万网官网首页
《试论改革教学内容和考试方式构建计算机公共课程体系》由会员分享,可在线阅读,更多相关《试论改革教学内容和考试方式构建计算机公共课程体系(2页珍藏版)》请在人人文库网上搜索。1、试论改革教学内容和考试方式构建计算机公共课程体系文章来源 毕业论文…...
免费的行情软件网站不用下载/网站案例分析
1. 物理设计:汉译英过程 ① Logical 中操作:Tools-Names-Edit Naming Standards…-Glossary选项import,导入内容为编辑好的CSV文件(只包含中文字段和英文字段两个字段),然后保存,另存为MSN文件。 ② Logical 中操作&am…...
wordpress phonegap/百度seo快速排名
整个项目包含了:开题报告 开题报告PPT 任务书 中期报告 论文模板 答辩PPT等 项目源码 主要安介绍了系统在开发过程中所应用到的一些关键的技术 主要python技术介绍;框架Django概要;MySQL数据库知识; 以及常规的网页技术HTM…...