scala速通(精简版)

news2025/2/27 2:36:39

1.变量和常量

var name [:VariableType] = value // variable
val name [:ConstantType] = value // constant

1.声明变量时,类型可以省略

2.类型定义后就不能修改言

3.变量声明必须有初始值

4.变量,常量分别用var,val声明修饰

2.标识符命名规范

注释写法和Java一样

关键字Java有的scala都有且多了一些object,trait,with,implicit,match,yield,def ,val,var

3.Scala运算符

1.双等号,在scala中表示非空equals

2.如果非要比较内存地址使用eq //切忌,使用eq不要使用基本数据类型

3.scala中没有++等运算,没有三元运算符,其他等逻辑运算完全同Java

小结:Scala比较值相等 == 比较地址相等使用eq

4.Scala完全面向对象语言&&强数据类型语言

1.任何变量方法属性条件控制语句都有返回值

2.Unit表示一种返回值;( ); 和Java中void异曲同工

3.条件控制语句返回值取满足条件的最后一行代码作为返回,返回值类型取同父类节点

在这里插入图片描述

5.Scala循环

1.for循环

for (elem <- array) {			//直接 array.for回车即可;
  println(elem)
}

//添加循环守卫法

for (elem <- carray if elem%5==0 ) {
      println(elem)
}

2.while循环同Java,只是多了个do while

do{

  println("先打印")

}while(false)

6.函数式编程

1.scala可以在任意位置创建函数,万物皆对象,scala认为函数也是一种对象

2.可变函数 与python同,可变参数只能放到参数列表最后一项

//    2.关于可变参树    加上*就表示可变参数

def fun2(name: String*): Unit = {
  println(name)
}

fun2()
fun2("zhangsan")

3.默认参数

def fun2(name: String=“zhangsan”): Unit = {
  println(name)
}

4.函数式编程简化

return可省

逻辑代码只有一行大括号省略;

返回值可省

没有声明参数,可以省略形参列表; 调用时候也必须省;

若确定没有返回值 Unit = 可省;

7.柯里化

1.柯里化是一种不负责任的写法,传值没法传完,所以进行简化,将不想管的形参进行分离,设置多个形参列表

柯里化有多个形参列表,编译时,少形参不会报错,但是运行时,少了不行;

8.惰性函数

1.函数中lazy修饰的语句,lazy 懒惰,也就是这条语句 先不执行

9.Scala面向对象

1.scala函数也是一个对象

2.关于函数对象数据类型;函数形参无数个,但是函数对象形参最多22个

普通写法****

var f1:Function1[Integer,String] = fun02 _     //Integer表示函数形参的类型,String表示函数返回值类型

**简化写法 **

(String,Integer)=>Unit		//形参指向返回值类型,省略形参名

3.函数对象调用和函数调用

var f_obj = fun _
var f_value = fun()

例子

def test(f: (Int,Int)=>Int):Unit={
  val result = f(10, 20)
  println(result)
}

def diff(x:Int,y:Int):Int={
  x-y
}

调用

test(diff _)			//下划线可省

4.形参为函数对象的匿名写法

test(
  (x:Int,y:Int)=>{
    x+y
})

简化

test( (x:Int,y:Int) => x+y )
test( (x,y) => x+y )			//test定义时候,函数类型已经定义过了所以省略Int
test( _ + _ )						//按照顺序只执行一次		

嵌套函数不能下划线使用

test ( println (_) )

10.Scala包

1.package可以多次声明,和java不同

2.拥有上下级,也就是包的作用域

3.包可以独立成为一个对象 //存放工具类包对象中写的所有方法,同一包下都可以使用;

package object xxx{

}

4.import

java.util._取代 util.

花括号导入多个包

import java.util.{
List,Arrays,Map
}

屏蔽类

import java.sql.{Date=>_, _} 	//导入sql然后Date请走的意思Date=>_ ,_表示其他

起别名

import java.sql.{Date=>别名Date} 

11.Scala类&&伴生对象

1.存在一个类,存在一个对象,类和对象相互存在,互为伴生的关系。object修饰

2.伴生对象可以访问类中的私有属性方法等;甚至可以直接通过apply()构造实例

3.编译器动态识别apply(),所以可省,scala常见类设计为单例设计模式,然后构造实例通过伴生对象的apply()方法

4.Scala类中属性可以使用占位符,先不赋值;

var tag:Boolean =_

5.类中Bean规范

@BeanProperty

13权限控制

知识点概念
private
--同类访问

private[ package_boy ]
--包私有; 同类&&package_boy包下的所有类都可以访问

protected
--同类,或子类      

(default)(public)默认public
--公共访问

private
–同类访问

private[包名]
–包私有; 当前类随便访问,指定的这个包下的所有类随便访问

protected
–当前类,或子类

(default)(public)默认public
–公共访问

未完待续后续补上,感谢支持;

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

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

相关文章

构建自己的docker镜像node.js

学习资源&#xff1a; 构建自己的 Docker 镜像_哔哩哔哩_bilibili 针对其中的一些比较困难的点写篇文章。 以下是对app.js的注释&#xff1a; // 使用 Koa 框架搭建 Node.js 应用的示例代码// 这两行代码引入了 koa 模块&#xff0c;并创建了一个新的 Koa 应用实例&#xf…

vue2项目升级到vue3经历分享4

后端重构&#xff0c;如果接口做好抽象封装&#xff0c;只需要考虑jar之间的兼容性问题&#xff0c;jdk版本不变&#xff0c;基本不用做太大的调整&#xff0c;但是前端就不一样&#xff0c;除了vue框架本身&#xff0c;css的调整&#xff0c;改起来更是让人头疼。前面写了vue2…

如何让vim支持python3

首先删除旧的vim。 sudo apt-get remove vim //输入re按下tab直接显示remove sudo apt-get remove vim-runtime sudo apt-get remove vim -tiny sudo apt-get remove vim-common 然后下载vim8源码&#xff1a; git clone https://github.com/vim/vim.git 进行编译安装…

一键剪辑1000条视频的矩阵系统小魔推到底有多牛?

小魔推是一款短视频营销工具&#xff0c;主要针对想做短视频营销的实体商家与企业。通过BGC、PGC、UGC流量的打造&#xff0c;帮助更多实体行业实现流量裂变与转化。通过小魔推不需要做额外的拍摄剪辑创作动作&#xff0c;只需要通过小魔推宣传码&#xff0c;就能一键发布带有门…

20240508请问GTX2080TI的300和300A核心的差异?

20240508请问GTX2080TI的300和300A核心的差异&#xff1f; 在拼多多/淘宝上&#xff0c;GTX2080TI的300A核心的会比300核心的贵100&#xffe5;左右。 但是怎么区分呢&#xff1f; 300a核心和300请问怎么区分呢&#xff1f;[嘻嘻] devicr ID diviceid 1e07是300a 1e04是300 Gp…

2024 GESP6级 编程第一题 游戏

题目描述 你有四个正整数 &#xff0c;并准备用它们玩一个简单的小游戏。 在一轮游戏操作中&#xff0c;你可以选择将 减去 &#xff0c;或是将 减去 。游戏将会进行多轮操作&#xff0c;直到当 时游戏结束。 你想知道游戏结束时有多少种不同的游戏操作序列。两种游戏操作…

docker-compose部署gitlab

需要提前安装docker和docker-compose环境 参考&#xff1a;部署docker-ce_安装部署docker-ce-CSDN博客 参考&#xff1a;docker-compose部署_docker compose部署本地tar-CSDN博客 创建gitlab的数据存放目录 mkdir /opt/gitlab && cd mkdir /opt/gitlab mkdir {conf…

Python深度学习基于Tensorflow(6)神经网络基础

文章目录 使用Tensorflow解决XOR问题激活函数正向传播和反向传播解决过拟合权重正则化Dropout正则化批量正则化 BatchNormal权重初始化残差连接 选择优化算法传统梯度更新算法动量算法NAG算法AdaGrad算法RMSProp算法Adam算法如何选择优化算法 使用tf.keras构建神经网络使用Sequ…

【C++】二叉搜索树(手撕插入、删除、寻找)

一、什么是二叉搜索树 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树: 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根节点的值它的左…

【Linux】25. 网络基础(一)

网络基础(一) 计算机网络背景 网络发展 独立模式: 计算机之间相互独立; 网络互联: 多台计算机连接在一起, 完成数据共享; 其实本质上一台计算机内部也是一个小型网络结构(如果我们将计算机内部某个硬件不存放在电脑中&#xff0c;而是拉根长长的线进行连接。这其实也就是网…

【Arduino IDE 2】Windows平台安装ESP8266 NodeMCU LittleFS Uploader(文件上传插件)

在Arduino IDE 2&#xff08;2.2.1或更高版本&#xff09;上&#xff0c;如何安装基于ESP8266 NodeMCU的LittleFS文件系统上传插件&#xff0c;以及如何将文件上传到ESP8266 NodeMCU板文件系统。 一、LittleFS简介 LittleFS是一个为微控制器创建的轻量级文件系统&#xff0c;可…

五种算法(BWO、RUN、SO、HO、GWO)求解复杂城市地形下无人机路径规划,可以修改障碍物及起始点(MATLAB)

一、算法介绍 &#xff08;1&#xff09;白鲸优化算法BWO 参考文献&#xff1a;Zhong C, Li G, Meng Z. Beluga whale optimization: A novel nature-inspired metaheuristic algorithm[J]. Knowledge-Based Systems, 2022, 109215. &#xff08;2&#xff09;龙格-库塔优化…

基于Springboot的校园招聘系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的校园招聘系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&…

6层板学习笔记1

说明:笔记基于6层全志H3消费电子0.65MM间距BGA 目的:掌握各类接口的布局思路和布线,掌握DDR高速存储设计 1、网表的导入是原理图的元件电气连接关系,位号,封装,名称等参数信息的总和 2、原理图文件包含(历史版本记录,功能总框图,电源树,GPIO分配,DDR功能,CPU,US…

渐进淡出背景个人导航页源码(火影版)

渐进淡出背景个人导航页源码&#xff08;火影版&#xff09; 效果图部分源码领取源码下期更新预报 效果图 部分源码 <!DOCTYPE html> <html> <head> <!--小K网 www.xkwo.com --><meta charset"UTF-8"><title>火影版个人主页<…

连接云服务器中部署的组件,如MySQL、nacos等

作者遇到的问题是在云服务器部署了nacos后&#xff0c;使用 弹性公网IP:8848/nacos来访问nacos中心&#xff0c;但是打不开页面。 解决了这个问题后将解决方法写下来希望帮到大家 这里以作者使用的华为云服务器为例。 首先明确安全组的概念&#xff1a; 系统为每个云服务器默…

内存卡突然罢工?数据恢复有高招!

内存卡作为我们日常生活中常见的存储设备&#xff0c;广泛应用于手机、相机等设备中。然而&#xff0c;有时我们会遇到内存卡损坏打不开的情况&#xff0c;这时该如何应对呢&#xff1f;本文将为您详细解析内存卡损坏的原因&#xff0c;并提供有效的数据恢复方案&#xff0c;帮…

Mysql 基础 - 常见 子句

算数运算符 > < > < !/<> 逻辑运算符 3i in is null is not null 2l limit like 2o or 、order by 1a and ib between and 1n not and、or 、not、 in、 orderby、 limit、 like、 between...and、 is null 、is not null

四级英语翻译随堂笔记

降维表达&#xff1a;中译英&#xff0c;英译英 没有强调主语&#xff0c;没有说明主语&#xff1a;用被动 但如果实在不行&#xff0c;再增添主语 不会就不翻译&#xff0c;不要乱翻译 以xxx为背景&#xff1a;against the backdrop of the xxx eg:against the backdrop of…

javax.net.ssl.SSLException: Received fatal alert: protocol_version已经解决

起因&#xff1a; 在帮别人讲解项目时&#xff0c;将项目的tomcat配置完&#xff0c;点击运行后&#xff0c;报错&#xff0c;信息如标题。 解决办法&#xff1a; 在csdn百度问题&#xff0c;得到的方法主要有几个&#xff1a; 1.jdk要配置在1.8以上&#xff1b; 2.数据库地…