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
–公共访问

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Google Pixel4手机刷机+Root+逆向环境详细教程

Google Pixel4手机刷机Root逆向环境配置详细教程 刷机工具下载 Windows10、Google Pixel4手机当前安卓10系统、adb工具、要刷的谷歌原生的Android11最新刷机包、安装google usb驱动、美版临时twrp-3.6.0_11-0-flame.img和美版永久twrp-installer-3.6.0_11-0-flame.zip、Magis…

webservice和TCP类型接口测试

1.webservice类型接口 1.1.webservice类型接口介绍 Web服务&#xff08;WebService&#xff09;是一种基于网络的应用程序接口&#xff08;API&#xff09;&#xff0c;可通过网络来进行通信和交互。它们使用标准化的协议和格式来进行通信&#xff0c;最常见的是使用XML&#…

Jmeter页面汉化和字体显示过小调整

在频繁解压使用Jmeter的时候&#xff0c;经常会遇到需要将页面的英文调整为中文&#xff0c;页面文字和编辑区域内容文字显示较小的问题&#xff0c;记录一下方便以后查阅。 1.页面汉化 Jmeter在解压启动之后页面显示是英文&#xff0c;如果需要修改为中文&#xff0c;可以修改…

【Python】在Windows Server上部署Flask后端服务器

想要在Windows Server上部署flask应用&#xff0c;当然不能只下一个anaconda配完环境之后直接启动py文件&#xff0c;这样的话后台会有一段警告&#xff1a; * Serving Flask app app* Debug mode: off WARNING: This is a development server. Do not use it in a production …

【氮化镓】GaN功率器件在转换器设计中的挑战

I. 引言(INTRODUCTION) 宽带隙(WBG)器件的重要性: 引言部分首先强调了宽带隙(WBG)器件在高频、高效率电力电子技术中的关键作用。这些器件,包括碳化硅(SiC)和氮化镓(GaN),相较于传统的硅功率器件,具有显著的优势。宽带隙半导体材料的高击穿场强允许设计更薄的漂…

了解内存函数

✨✨欢迎&#x1f44d;&#x1f44d;点赞☕️☕️收藏✍✍评论 个人主页&#xff1a;秋邱博客 所属栏目&#xff1a;C语言 前言 内存函数不止malloc、calloc、realloc、free还有memcpy、memmove、memset、memcmp。前四个的头文件是<stdlib.h>,后四个的头文件是<strin…

HTML学习|网页基本信息、网页基本标签、图像标签、超链接标签、列表标签、表格标签、媒体元素、页面结构分析、iframe内联框架

网页基本信息 DOCTYPE是设置使用什么规范&#xff0c;网页整个信息都在html标签中&#xff0c;head标签里包含字符集设置&#xff0c;网页介绍等信息&#xff0c;title标签是网页的名称&#xff0c;网页的主干都在body标签中 网页基本标签 标题标签 h1~h6都是标题标签&#x…

【项目实战】使用Yolov8 + tesseract 实现身份证信息解析(OCR) + 输入可为图片或者pdf + 完整代码 + 整体方案 + 全网首发

本项目可用于实验,毕业设计参考等。整体效果如下所示: 说明:图片来源于网络,如有侵权,请联系作者删除。 目录 一 数据集制作

WPF之多种视图切换

1&#xff0c;View切换&#xff0c;效果呈现 视图1 视图2 视图3 2&#xff0c;在Xaml中添加Listview控件&#xff0c;Combobox控件。 <Grid ><Grid.RowDefinitions><RowDefinition Height"143*"/><RowDefinition Height"30"/>&l…

Ubuntu 下串口工具:Minicom、CuteCom 和 Screen

在 Ubuntu 中&#xff0c;对于串口通信工具的选择&#xff0c;虽然没有一个绝对的 “最好用” 的排名&#xff0c;但根据用户反馈和工具的流行程度&#xff0c;Minicom、CuteCom 和 Screen 这三个工具通常被认为是较为受欢迎和实用的。 一、简介&#xff1a; Minicom&#xff…

一款功能强大的网络安全综合工具-PotatoTool

一、 简介 这款工具是一款功能强大的网络安全综合工具&#xff0c;旨在为安全从业者、红蓝对抗人员和网络安全爱好者提供全面的网络安全解决方案。它集成了多种实用功能&#xff0c;包括解密、分析、扫描、溯源等&#xff0c;为用户提供了便捷的操作界面和丰富的功能选择。 二…

英语学习笔记6——What make is it?

What make is it? 它是什么牌子的&#xff1f; make n.&#xff08;产品的&#xff09;品牌名称    v. 制作 区别&#xff1a;model n.&#xff08;产品的&#xff09;型号       n. 模型       n. 模特 make 指的是大的品牌名称&#xff0c; model 是旗下产品…

Honor of Kings QQ 1537937510

司空震到底要不要物理伤害高呢&#xff1f;还是法术伤害高呢&#xff1f;要不要出魔女和制裁引发的血案 先看下司空震的说明&#xff1a; 说下这个伙计为啥加QQ来骂我&#xff0c;因为这场当然最终是赢了&#xff0c;比赛里他一直强调司空震是物理伤害改版问题&#xff0c;然后…

Whistle Web Debugging Proxy介绍及使用

大家好&#xff0c;今天继续给大家分享一款抓包工具&#xff0c;这款抓包工具是网页的形式&#xff0c;方便多人访问同时维护。Whistle Web Debugging Proxy是一个用于HTTP、HTTPS、WebSocket等网络协议的跨平台调试工具。它可以帮助开发者对网络请求进行捕捉、分析、修改和重定…

WPF/C#:ProgressBar的基本使用

前言 在日常开发过程中&#xff0c;如果遇到需要一段时间才能完成的任务&#xff0c;通常需要给用户一个进度条提示。今天给大家介绍的是WPF/C#中ProgressBar的基本使用。 ProgressBar的介绍 在WPF&#xff08;Windows Presentation Foundation&#xff09;中&#xff0c;Pr…

Kafka应用Demo:多消费者实例按主题订阅消费消息,增强系统可靠性

环境搭建 在本地启动两个消费者进程&#xff0c;配置同的群组&#xff08;neo1&#xff09;, 订阅同一个主题消费消息。 生产者和消费者代码与《Kafka应用Demo&#xff1a;按主题订阅消费消息》相同。 测试步骤 生产者发送多个数字消息到kafka队列&#xff0c; 可以看到只有…

MouseBoost PRO mac中文激活版:专业鼠标助手

MouseBoost PRO mac鼠标性能优化软件&#xff0c;以其强大的功能和智能化的操作&#xff0c;助您轻松驾驭鼠标&#xff0c;提高工作效率。 MouseBoost PRO支持自定义快捷键设置&#xff0c;让您轻松实现快速切换应用程序、打开特定文件、调节音量大小等操作。自动识别窗口功能则…

运行npm install时报错“npm ERR! code 1”

目录 一、问题分析 二、解决问题 一、问题分析 有registry淘宝镜像地址过期的问题&#xff0c;改一下地址 npm淘宝镜像过期解决办法-CSDN博客主要问题是node-sass和sass-loader版本冲突 打开cmd&#xff0c;输入"node -v"查看node版本 我的版本是16&#xff0c;应…

java项目之智慧图书管理系统设计与实现(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的智慧图书管理系统设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 智慧图书管理…

elk + filebeat 8.4.3 收集nginx日志(docker部署)

ELK filebeat docker部署 一、 elasticsearch部署1、运行elasticsearch临时配置容器2、拷贝文件目录到本地3、检查elasticsearch.yml4、删除之前elastic&#xff0c;运行正式容器5、docker logs记录启动日志 二、部署kibana1、运行kibana临时配置容器2、docker拷贝配置文件到本…