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

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安装 下载网址&#xff1a;Install | The Scala Programming Language ideal安装 &#xff08;1&#xff09;下载安装Scala plugins &#xff08;2&#xff09;统一JDK环境&#xff0c;统一为8 &#xff08;3&#xff09;加载Scala &#xff08;4&#xff09;创建工…...

【Java-LangChain:面向开发者的提示工程-5】推断

第五章 推断 推断任务可以看作是模型接收文本作为输入&#xff0c;并执行某种分析的过程。其中涉及提取标签、提取实体、理解文本情感等等。如果你想要从一段文本中提取正面或负面情感&#xff0c;在传统的机器学习工作流程中&#xff0c;需要收集标签数据集、训练模型、确定如…...

【C++】手撕vector(vector的模拟实现)

手撕vector目录&#xff1a; 一、基本实现思路方针 二、vector的构造函数剖析&#xff08;构造歧义拷贝构造&#xff09; 2.1构造函数使用的歧义问题 2.2 vector的拷贝构造和赋值重载&#xff08;赋值重载不是构造哦&#xff0c;为了方便写在一起&#xff09; 三、vector的…...

智能指针那些事

​《Effective Modern C》学习笔记之条款二十一&#xff1a;优先选用std::make_unique和std::make_shared,而非直接new - 知乎...

Fiddler抓取手机https包的步骤

做接口测试时&#xff0c;有时我们需要使用fiddler进行抓包分析&#xff0c;那么如何抓取https包。主要分为以下七步&#xff1a; 1.设置fiddler选项&#xff1a;Tools->Options,按如下图勾选 2.下载并安装Fiddler证书生成器 下载地址&#xff1a;http://www.telerik.com/…...

idea没有maven工具栏解决方法

背景&#xff1a;接手的一些旧项目&#xff0c;有pom文件&#xff0c;但是用idea打开的时候&#xff0c;没有认为是maven文件&#xff0c;所以没有maven工具栏&#xff0c;不能进行重新加载pom文件中的依赖。 解决方法&#xff1a;选中pom.xml文件&#xff0c;右键 选择添加为…...

levelDB引擎

一、背景 1.1、影响磁盘性能的因素&#xff1a; 主要受限于磁盘的寻道时间&#xff0c;优化磁盘数据访问的方法是尽量减少磁盘的IO次数。磁盘数据访问效率取决于磁盘IO次数&#xff0c;而磁盘IO次数又取决于数据在磁盘上的组织方式。磁盘数据存储大多采用B树类型数据结构&…...

IM同步服务

设计概述 后台同步方案的设计就是数据存储结构的设计&#xff0c;如何快速体现“信息变化”&#xff0c;如何快速计算出“变化信息”。后台数据存储结构是由同步协议中同步契约决定的。 设计方案 该方案的同步是按照业务粒度来划分&#xff0c;只需要同步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函数做就行。&#xff08;如果不存在那个子串就返回-1&#xff0c;否则返回第一次出现位置&#xff09; 注意题目中编号是从1开始的。 时间复杂度&#xff1a;O(log(n))。find函数有一定代价&#xff0c;我记…...

visual studio的安装及scanf报错的解决

visual studio是一款很不错的c语言编译器 下载地址&#xff1a;官网 点击后跳转到以下界面 下滑后点击下载Vasual Sutdio&#xff0c;选择社区版即可 选择位置存放下载文件后&#xff0c;即可开始安装 安装时会稍微等一小会儿。然后会弹出这个窗口&#xff0c;我们选择安装位…...

React生命周期

React的生命周期主要是指React组件从创建到销毁的过程&#xff0c;包括三个阶段&#xff1a;挂载期&#xff08;实例化期&#xff09;、更新期&#xff08;存在期&#xff09;、卸载期&#xff08;销毁期&#xff09; 挂载期&#xff1a; constructor&#xff08;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 模块 全分段 因为只有分段 &#xff0c; 分开使用之后 &#xff0c; 各个阶段的具体功能才会合理使用 就像是为了后续 “气泡” 赋值 为 0 还有单独比较前递这种 EX &#xff1a; ALUOP ALUSrc …...

A. Sequence with Digits

题目&#xff1a;样例&#xff1a; 输入 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 思路&#xff1a; 暴力模拟题&#xff0c;看这数据范围&#xff0c;有些人可能会被唬住&#xff0c;以为是高精度或者容易超时&#xff0c;实际上…...

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个人如何报名?

如果不会操作&#xff0c;可以微信makytony协助。...

Cesium实现动态旋转四棱锥(2023.9.11)

Cesium实现动态悬浮旋转四棱锥效果 2023.9.11 1、引言2、两种实现思路介绍2.1 思路一&#xff1a;添加已有的四棱锥&#xff08;金字塔&#xff09;模型实现&#xff08;简单但受限&#xff09;2.2 思路二&#xff1a;自定义四棱锥几何模型实现&#xff08;复杂且灵活&#xff…...

2023最新PS(photoshop)Win+Mac免费下载安装包及教程内置AI绘画-网盘下载

2023最新PS(photoshop)WinMac免费下载安装包及教程内置AI绘画-网盘下载 2023最新PS(photoshop)免费下载安装教程来咯&#xff5e; 「PhotoShop」全套&#xff0c;winmac&#xff1a; https://pan.quark.cn/s/9d8d8ef5c400#/list/share 所有版本都有 1&#xff0c;复制链接…...

【JAVA】为什么要使用封装以及如何封装

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 前言 Java的封装指的是在一个类中将数据和方法进行封装&#xff0c;使其可以保护起来&#xff0c;只能在该类内部访问&#xff0c;而不允许外部直接访问和修改。这是Java面向对象编程的三…...

IPD实战指南:CBB模块化设计如何加速产品创新与资源整合

1. CBB模块化设计的本质与价值 第一次接触CBB这个概念时&#xff0c;我正负责一款智能家居产品的研发。当时团队为了赶进度&#xff0c;每个新产品都从零开始设计电路板&#xff0c;结果发现80%的功能模块都是重复的。这种低效的开发方式让我开始思考&#xff1a;能不能像搭积木…...

夺回社交主动权:iBeebo如何让微博回归纯粹体验

夺回社交主动权&#xff1a;iBeebo如何让微博回归纯粹体验 【免费下载链接】iBeebo 第三方新浪微博客户端 项目地址: https://gitcode.com/gh_mirrors/ib/iBeebo 你是否经历过这样的时刻&#xff1f;通勤路上想快速刷几条微博&#xff0c;却被开屏广告耽误了上车时间&am…...

MarkDownload:让网页转Markdown变得简单高效的浏览器扩展

MarkDownload&#xff1a;让网页转Markdown变得简单高效的浏览器扩展 【免费下载链接】markdownload A Firefox and Google Chrome extension to clip websites and download them into a readable markdown file. 项目地址: https://gitcode.com/gh_mirrors/ma/markdownload…...

别再只会抓HTTP了!手把手教你配置Fiddler抓取手机App的HTTPS请求(含证书安装避坑)

移动端HTTPS抓包实战&#xff1a;Fiddler配置与证书避坑指南 每次看到App里那些神秘的网络请求&#xff0c;你是不是也好奇它们到底在传输什么数据&#xff1f;作为开发者或测试人员&#xff0c;能够抓取和分析这些请求是基本功。但面对HTTPS加密流量&#xff0c;很多新手往往束…...

数字减影血管造影系统市场洞察:至2032年将攀升至557.6亿元

据恒州诚思最新调研数据显示&#xff0c;2025年全球数字减影血管造影系统&#xff08;DSA&#xff09;市场规模预计达386.7亿元&#xff0c;至2032年将攀升至557.6亿元&#xff0c;2026-2032年复合增长率&#xff08;CAGR&#xff09;为5.5%。这一增长受全球老龄化加速、心血管…...

SWF逆向工程认证培训师手册:基于JPEXS Free Flash Decompiler的教学指南

SWF逆向工程认证培训师手册&#xff1a;基于JPEXS Free Flash Decompiler的教学指南 【免费下载链接】jpexs-decompiler JPEXS Free Flash Decompiler 项目地址: https://gitcode.com/gh_mirrors/jp/jpexs-decompiler JPEXS Free Flash Decompiler是一款开源的Flash SWF…...

SEO_10个提升网站排名的实用SEO技巧分享(220 )

<h1 id"seo10seo">SEO:10个提升网站排名的实用SEO技巧分享</h1> <p>在当今互联网时代&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;已经成为提升网站流量和吸引潜在客户的关键手段。百度作为中国最大的搜索引擎&#xff0c;其优化规则对整…...

算法基础篇(11)Floyd算法

Floyd算法本质是动态规划&#xff0c;用来求任意两点之间的最短路&#xff0c;也称为插点法。通过不断在两点之间加入新的点来更新最短路。1、状态表示&#xff1a;f[k][i][j]表示&#xff1a;仅仅经过1~k这些点&#xff0c;结点i走到结点j的最短路径的长度。2、状态转移方程&a…...

Onekey:突破Steam清单管理瓶颈的全场景开源解决方案

Onekey&#xff1a;突破Steam清单管理瓶颈的全场景开源解决方案 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 在数字游戏产业蓬勃发展的今天&#xff0c;Steam平台已成为全球最大的综合性数字…...

[路径保护]解决中文路径乱码:从名称错乱到Unicode支持的实践指南

[路径保护]解决中文路径乱码&#xff1a;从名称错乱到Unicode支持的实践指南 【免费下载链接】calibre-do-not-translate-my-path Switch my calibre library from ascii path to plain Unicode path. 将我的书库从拼音目录切换至非纯英文&#xff08;中文&#xff09;命名 项…...