scala速通(精简版)

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.mzph.cn/bicheng/8681.shtml

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

相关文章

NLP从入门到精通——信息抽取概述

信息抽取 1.概述 随着互联网和社交媒体的飞速发展&#xff0c;我们每天都会接触到大量的非结构化数据&#xff0c;如文本、图片和音频等。这些数据包含了丰富的信息&#xff0c;但也提出了一个重要问题&#xff1a;如何从这些海量数据中提取有用的信息和知识&#xff1f;这就…

识货小程序逆向

声明 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01;wx a15018601872&#xff0c;x30184483x…

仓库管理系统需求调研要点

仓库管理系统需求调研 一、仓库的作用 仓库分类 原材料仓库&#xff1a;用于存放生产所需的原材料和零部件&#xff0c;需要保持原材料的质量和数量稳定。半成品仓库&#xff1a;存放生产过程中的半成品和在制品&#xff0c;需要保持良好的生产流程和及时出库。成品仓库&#x…

05-08 周三 FastBuild FastAPI 引入并发支持和全局捕获异常

时间版本修改人描述2024年5月8日20:41:03V0.1宋全恒新建文档 简介 由于FastBuild之前花费了大概5天的时间优化&#xff0c;但最近重新部署&#xff0c;又发现了一些问题&#xff0c;就很痛苦&#xff0c;五一之后&#xff0c;自己又花了三天的时间系统的进行了优化。 上一波优…

【R语言】生存分析模型

生存分析模型是用于研究时间至某个事件发生的概率的统计模型。这个事件可以是死亡、疾病复发、治疗失败等。生存分析模型旨在解决在研究时间相关数据时的挑战&#xff0c;例如右侧截尾&#xff08;右侧截尾表示未观察到的事件发生&#xff0c;例如研究结束时还未发生事件&#…

2024年第七届人工智能和模式识别国际会议(AIPR 2024)即将召开!

2024年第七届人工智能和模式识别国际会议&#xff08;AIPR 2024)将于2024年9月20-22日在福建厦门市的华侨大学举行。探索AI边界&#xff0c;解锁识别新境界&#xff01;AIPR 2024旨在促进模式识别与机器学习, 计算机视觉与机器人视觉, 图像、语音、信号和视频处理等领域尖端成果…

torch.distributed.launch使用中的问题

error:unrecognized argument: --local-rank0 link AttributeError: module numpy has no attribute int solu AttributeError: ‘MMDistributedDataParallel’ object has no attribute ‘_use_replicated_tensor_module’ solu 还是torch版本问题

星辰考古:TiDB v1.0 再回首

“ 1.0 版本只是个开始&#xff0c;是新的起点&#xff0c;愿我们一路相扶&#xff0c;不负远途。 前言 TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库。 近日&#xff0c;TiDB v8.0.0 DMR 发布&#xff0c;详细发版说明戳这里&#xff1a; https://docs.pingca…

linux container_of宏

1 结构体 假如我们有一个结构体Student&#xff0c;其定义如下&#xff1a; typedef struct student {int id;char name[30];int math; }Student; 通过Student stu定义stu变量后&#xff0c;我们可以通过stu.id或stu.name来获取stu的成员。但如果想反过来&#xff0c;通过st…

Java | Spring框架 | @Autowired与@Resource

在Spring框架中&#xff0c;依赖注入是一种核心概念&#xff0c;它允许开发者将对象的创建和对象之间的依赖关系的管理交给框架来处理。这样做的目的是为了提高代码的模块化和可测试性。 Spring提供了多种方式来实现依赖注入&#xff0c;其中最常用的方式是通过注解。在本文中…

uniapp + vue3 设置 axios proxy 代理,并重写路径

uniapp vue2 设置代理如下&#xff1a; 已生成的项目架构里面找到manifest.json文件&#xff0c;通过源码视图的方式打开文件&#xff0c;在文件中添加一下代码即可完成代理&#xff1a; "h5": {"devServer": {"disableHostCheck": true, //禁…

模板显式特化与隐式特化

当使用一个模板时&#xff0c;称为实例化模板。模板实例是编译器通过将模板参数应用于模板定义而创建的具体函数或类。模板实例又称为特化。因此&#xff0c;rational<int>是模板rational<>的一个特化。因此&#xff0c;特化是针对特定一组模板参数实现模板的过程。…

linux部署java1.8(jdk1.8)

两种方式&#xff1a; 方式一 1.输入查找命令&#xff1a; yum -y list java*2.输入安装命令&#xff1a; yum install -y java-1.8.0-openjdk.x86_643.测试是否已经安装&#xff1a; java -version方式二&#xff1a; 点击链接进入官网&#xff1a;https://www.oracle.com/…

Python 全栈体系【四阶】(四十一)

第五章 深度学习 九、图像分割 1. 基本介绍 1.1 什么是图像分割 图像分割&#xff08;Segmentation&#xff09;是图像处理和机器视觉一个重要分支&#xff0c;其目标是精确理解图像场景与内容。图像分割是在像素级别上的分类&#xff0c;属于同一类的像素都要被归为一类&a…

ReactFlow的ReactFlow实例事件传参undefined处理状态切换

1.问题 ReactFlow的ReactFlow实例有些事件我们在不同的状态下并不需要&#xff0c;而且有时候传参会出现其它渲染效果&#xff0c;比如只读状态下我们不想要拖拉拽onEdgesChange连线重连或删除的功能。 2.思路 事件名称类型默认值onEdgesChange(changes: EdgeChange[]) >…

pandas快速使用

DataFrame介绍 Dateframe结构和列表类似&#xff0c;区别是对于DataFrame的每一列和每一行均有一个标签。例如以下数据&#xff0c; 上述数据中&#xff0c;日期作为每行的标签。a、b、c、d、e分别是每列的标签 生成连续日期数据 使用方法date_range()&#xff0c;该方法有两…

MySQL部署系列-centos离线安装MySQL

MySQL部署系列-centos离线安装MySQL 文章目录 MySQL部署系列-centos离线安装MySQL1. 查看是否已经安装 Mysql3. 下载官方 Mysql 包3. 下载之后上传到服务器4. 创建用户组5. 创建数据目录并赋予权限6. 修改配置文件 vim /etc/my.cnf7. 初始化数据库(数据库安装)8. 加入到系统服务…

【3dmax笔记】035: 车削修改器

一、车削修改器介绍 车削&#xff1a;图形通过绕轴旋转来创建三维效果。 开放的样条线&#xff0c;车削之后是面片。闭合的样条线&#xff0c;车削之后&#xff0c;是实体。 一、车削修改器实例 绘制高脚杯&#xff0c;首先在前视图绘制如下二维图形。 添加一个车削的修改器…

(六)JSP教程——out对象

out对象是在JSP中经常使用到的对象&#xff0c;它本质上是一个输出流&#xff0c;前面已经多次使用&#xff0c;我们经常使用它的print()和println()方法&#xff0c;这些方法主要用于实现客户端数据的输出。通过out对象也可以直接向客户端发送一个由程序动态生成的HTML文件。 …

PackageKit使用(二)

本篇主要讲述&#xff0c;如何调用PackageKit c库的接口&#xff0c;只举例个别接口&#xff0c;基本上通用。 //检测更新 auto refresher PackageKit::Daemon::refreshCache(false);connect(refresher, &PackageKit::Transaction::errorCode, this, &MainWindow::er…