scala文档阅读笔记

来源:互联网 发布:淘宝如何设置关联旺旺 编辑:程序博客网 时间:2024/06/05 16:37

Scala被编译成字节码文件.class后在Java虚拟机上运行, 许多现有公司依靠Java进行关键业务应用转向或正在转向Scala,以提高其开发生产力,应用程序可扩展性和整体可靠性

Scala可以执行Java代码
Scala能够使用Java SDK的所有类以及自定义Java类,或您最喜欢的Java开源项目

这里写图片描述

● 闭包 - 闭包是一个函数,其返回值取决于在此函数之外声明的一个或多个变量的值。
● 特征 - 特征(Traits)封装了方法和字段定义,然后可以通过将它们混合到类中来重用它们,特征(Traits)用于通过指定支持的方法的签名来定义对象类型。

基础语法
以下是Scala编程中的基本语法和编码约定。
● 区分大小写 - Scala是区分大小写的,比如标识符Hello和hello在Scala中表示不同的含义(对象)。
● 类名称 - 对于所有类名,第一个字母应为大写。如果使用多个单词来形成类的名称,则每个内部单词的第一个字母应该是大写。
示例 - class MyFirstScalaClass,class Employee*类等。
● 方法名称 - 所有方法名称应以小写字母开头。如果使用多个单词形成方法的名称,则每个内部单词的第一个字母应为大写。
示例 - def myMethodName(),def getName()等。
● 程序文件名 - 程序文件的名称应与对象名称完全匹配。保存文件时,您应该使用对象名称保存它(记住Scala是区分大小写的),并将.scala附加到文件名称的末尾。 (如果文件名和对象名不匹配,则程序将不会编译)。
示例 - 假设HelloWorld是对象名称。 那么文件应该保存为HelloWorld.scala。
● def main(args:Array [String]) - Scala程序从main()方法开始,这是每个Scala程序的强制性部分

Scala具有用于声明变量的不同语法。它们可以被定义为值,即常数或变量。 这里,myVar使用关键字var声明。 它是一个可以改变值的变量,这称为可变变量。 以下是使用var关键字定义变量的语法 -
语法
var myVar : String = “Foo”

Scala
下面示例中,myVal使用关键字val声明。它是一个不能被改变的变量,这被称为不可变变量。 以下是使用val关键字定义变量的语法 -
val myVal : String = “Foo”

保护作用域
Scala中的访问修饰符可以通过限定符进行扩充。形式为private [X]或protected [X]的修饰符表示为访问是私有或受保护的“最多”到X,其中X指定一些封闭的包,类或单例对象。
考虑以下示例 -
package society {
package professional {
class Executive {
private[professional] var workDetails = null
private[society] var friends = null
private[this] var secrets = null

     def help(another : Executive) {        println(another.workDetails)        println(another.secrets) //ERROR     }  }

}
}

Scala
注意 - 以下几点来自上面的例子总结 -
● 变量:workDetails在封闭包professional中的任何类中可访问。
● 封闭包:friends的任何类都可以被society包中任何类访问。
● 变量:secrets只能在实例方法的隐式对象(this)中访问。

用函数式的风格解决break和contine的功能,而不是一个关键字。
如何在Scala中实现break和continue呢?
(1)break例子
breakable(
for(i<-0 until 10) {
println(i)
if(i==5){
break()
}
}
)
// 0,1,2,3,4,5
(2)continue例子
for(i<-0 until 10){
breakable{
if(i==3||i==6) {
break
}
println(i)
}
}
//0,1,2,3,5,7,8,9

一个不返回任何东西的函数可以返回一个类似在Java中的void类型,并表示该函数不返回任何内容。 在Scala中不返回任何东西的函数称为过程。
语法
object Hello{
def printMe( ) : Unit = {
println(“Hello, Scala!”)
}
}

Scala闭包
闭包是一个函数,它返回值取决于在此函数之外声明的一个或多个变量的值。
以下代码是一个匿名函数。
val multiplier = (i:Int) => i * 10

Scala
这里,函数体i * 10中使用的唯一变量是i,它被定义为该函数的一个参数。尝试以下代码 -
val multiplier = (i:Int) => i * factor

Scala
乘数有两个自由变量:i和factor。i是函数的一个正式参数。 因此,每当调用乘数时,它必然会有一个新的值。然而,factor不是一个正式的参数,那这是什么呢? 再增加一行代码。
var factor = 3
val multiplier = (i:Int) => i * factor

Scala
现在factor参考了函数之外的变量,但是在闭合的范围内。函数引用factor,每次读取其当前值。 如果函数没有外部引用,那么它本身就会被简单地关闭,不需要外部上下文。

在scala中,没有静态的概念。 所以scala创建一个单例对象来为程序的执行提供入口点。

final 变量和方法 不能覆盖、重写
final 类不能继承

原创粉丝点击