scala速通(精简版)

2024-05-08 22:36
文章标签 scala 速通 精简版

本文主要是介绍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
–公共访问

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

这篇关于scala速通(精简版)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/971626

相关文章

深度学习速通系列:深度学习算法讲解

深度学习算法是一系列基于人工神经网络的算法,它们通过模拟人脑处理信息的方式来学习和解决复杂问题。这些算法在图像识别、语音识别、自然语言处理、游戏等领域取得了显著的成就。以下是一些流行的深度学习算法及其基本原理: 1. 前馈神经网络(Feedforward Neural Networks, FNN) 原理:FNN 是最基本的神经网络结构,它由输入层、隐藏层和输出层组成。信息从输入层流向隐藏层,最

速通GPT-3:Language Models are Few-Shot Learners全文解读

文章目录 论文实验总览1. 任务设置与测试策略2. 任务类别3. 关键实验结果4. 数据污染与实验局限性5. 总结与贡献 Abstract1. 概括2. 具体分析3. 摘要全文翻译4. 为什么不需要梯度更新或微调⭐ Introduction1. 概括2. 具体分析3. 进一步分析 Approach1. 概括2. 具体分析3. 进一步分析 Results1. 概括2. 具体分析2.1 语言模型

9.8通宵速通javascript

由于正着已经光速通了一些基础语法了,所以这一步我们倒着来。并记录一些疑问从而从难到易去解决这些问题。 23 eventloop 首先明确两个概念,分别是 1 调用栈 javascript只有一个调用栈用于跟踪函数其他的就类似于任何语言的函数调用栈 2 任务队列 异步任务在完成时会被添加到任务队列中,当调用栈为空的时候,也就是当下的函数全部执行完之后,会将这些已经完成的任务从任务队列中放入函数调

深度学习速通系列:如何生成句向量?

生成句向量(Sentence Embedding)是自然语言处理(NLP)中的一项重要技术,它将文本句子转换为固定长度的数值向量,这些向量能够捕捉句子的语义信息。以下是一些生成句向量的方法: 词袋模型(Bag of Words, BoW): 将句子中的每个词转换为一个特征向量,并将所有词的特征向量平均或求和,以生成句子的向量表示。 TF-IDF: 使用词频-逆文档频率(Term Freque

【scala 安装错误】错误: 找不到或无法加载主类 scala.tools.nsc.MainGenericRunner

错误: 找不到或无法加载主类 scala.tools.nsc.MainGenericRunner 原因: Scala安装路径中包含空格。 解决办法:scala 不要安装在E:\Program Files 这种有空格的目录下,简直坑

深度学习速通系列:归一化和批量归一化

在深度学习中,归一化和批量归一化是两种常用的技术,它们有助于提高模型的训练效率和性能。下面详细解释这两种技术: 归一化(Normalization) 归一化是指将数据的数值范围调整到一个特定的区间,通常是[0, 1]或者[-1, 1],或者使其具有零均值和单位方差。这样做的目的是减少不同特征之间的数值范围差异,使得模型训练更加稳定和高效。 常见的归一化方法包括: 最小-最大归一化(Min

Scala模式匹配下提取器构造

示例代码: object :> {def unapply[A] (list:List[A]) = {Some( (list.init,list.last) )}}object Extractor_Advanced {def main(args: Array[String]): Unit = {(1 to 9).toList match{ case _ :> 9 => println(

从spark源码的角度思考scala中的模式匹配

1.scala中模式匹配 2.spark源码中的模式匹配思考 spark中master会收到worker发过来的akka的消息, 此消息是case class即(Master.class中): case class RegisterWorker(id:String,host:String,port:Int,cores:Int,memory:Int,webUiPort:int

Scala界面事件处理

示例代码: import scala.swing.SimpleSwingApplicationimport scala.swing.MainFrameimport scala.swing.Buttonimport scala.swing.Labelimport scala.swing.Orientationimport scala.swing.BoxPanelimpo

Scala界面Panel、Layout初探

示例代码: package com.dt.scala.guiimport scala.swing.SimpleSwingApplicationimport scala.swing.MainFrameimport scala.swing.Buttonimport scala.swing.Labelimport scala.swing.Orientationimport scal