Scala总结(一)

Scala简介

Scala 是 Scalable Language 的简写,是一门多范式的编程语言;是由 Martin Odersky 等人在 2003 年开发的,并于 2004 年首次发布;设计初衷是要集成面向对象编程和函数式编程的各种特性。Scala 运行在 Java 虚拟机上,并兼容现有的 Java 程序。Scala 源代码被编译成 Java 字节码,所以它可以运行于 JVM 之上,并可以调用现有的 Java 类库

Scala 特性

Scala特性分为面向对象特性、函数式编程、类型系统、扩展性、并发性、强大的标准库、与 Java 互操作性、模块化和可扩展性等

******1. 面向对象特性:******类和对象、继承和多态、抽象类和特质、封装

Scala 是一种高度表达性的编程语言,它结合了面向对象编程和函数式编程的最佳特性

******2 . 函数式编程:******高阶函数、不可变性、模式匹配、闭包

**3.**类型系统:静态类型、类型推断、泛型编程、类型系统扩展

Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。类型系统具体支持以下特性:泛型类、协变和逆变、标注、类型参数的上下限约束、把类别和抽象类型作为对象成员、复合类型、引用自己时显式指定类型、视图、多态方法

******4. 扩展性:******Scala提供了许多独特的语言机制,可以以库的形式轻易无缝添加新的语言结构:任何方法可用作前缀或后缀操作符、可以根据预期类型自动构造闭包

******5. 并发性:Akka框架、******Futures 和 Promises、Scala 并发集合

******6. 强大的标准库:******集合框架、字符串处理、IO操作

******7. 与 Java 互操作性:******无缝调用、Java标准库

8. 模块化和可扩展性特质(Traits)、隐式转换和参数

Scala语言的特点

优雅、速度快是 Scala语言的特点的两大特点

Scala是静态编译的,所以速度会快很多,能融合到Hadoop生态圈:Hadoop现在是大数据事实标准,Spark并不是要取代Hadoop,而是要完善Hadoop生态。JVM语言大部分可能会想到Java,但Java做出来的API太丑,或者想实现一个优雅的API太费劲。

学习Scala编程语言,为后续学习Spark和Kafka奠定基础

Scala 基础语法

Scala程序

分为交互式编程和脚本形式两种

交互式编程

交互式编程不需要创建脚本文件,可以通过以下命令调用:

脚本形式

我们也可以通过创建一个 HelloWorld.scala 的文件来执行代码,HelloWorld.scala 代码如下所示:

运行结果:

基本语法

  1. 区分大小写
  2. 类名:-对于所有的类名的第一个字母要大写 例:class MyFirstScalaClass
  3. 方法名称:所有的方法名称的第一个字母用小写 例:def myMethodName()
  4. 程序文件名:程序文件的名称应该与对象名称完全匹配,保存文件时,应该保存它使用的对象名称(记住Scala是区分大小写),并追加".scala"为文件扩展名。 (如果文件名和对象名称不匹配,程序将无法编译) 例:假设"HelloWorld"是对象的名称。那么该文件应保存为'HelloWorld.scala"
  5. def main(args: Array[String]- Scala程序从main()方法开始处理,这是每一个Scala程序的强制程序入口部分

标识符

Scala 可以使用两种形式的标志符,字符数字和符号

字符数字使用字母或是下划线开头,后面可以接字母或是数字,符号"$"在 Scala 中也看作为字母

符号标志符包含一个或多个符号,如+,:,? 等

Scala 内部实现时会使用转义的标志符,比如:-> 使用 colonminus$greater 来表示这个符号

混合标志符由字符数字标志符后面跟着一个或多个符号组成,比如 unary_+ 为 Scala 对+方法的内部实现时的名称。字面量标志符为使用"定义的字符串,比如 `x` `yield`

Scala 关键字

下表列出了 scala 保留关键字,我们不能使用以下关键字作为变量

Scala 注释

Scala 类似 Java 支持单行和多行注释。多行注释可以嵌套,但必须正确嵌套,一个注释开始符号对应一个结束符号

空行和空格

一行中只有空格或者带有注释,Scala 会认为其是空行,会忽略它。标记可以被空格或者注释来分割

换行符

Scala是面向行的语言,语句可以用分号(;)结束或换行符。Scala 程序里,语句末尾的分号通常是可选的

Scala 包

定义包

Scala 使用 package 关键字定义包,在Scala将代码定义到某个包中有两种方式:

  1. Java 一样,在文件的头定义包名,这种方法就后续所有代码都放在该包中

如:package com.runoobclass HelloWorld

2.些类似 C#,可以在一个文件中定义多个包

如:

package com.runoob {

class HelloWorld }

引用

Scala 使用 import 关键字引用包

import java.awt.Color // 引入Color

import java.awt._ // 引入包内所有成员

def handler(evt: event.ActionEvent) { // java.awt.event.ActionEvent

... // 因为引入了java.awt,所以可以省去前面的部分}

import语句可以出现在任何地方,而不是只能在文件顶部。import的效果从开始延伸到语句块的结束。这可以大幅减少名称冲突的可能性

相关推荐
海狸鼠13 分钟前
几行代码实现MCP服务端/客户端(接入DeepSeek)
前端·后端
37手游后端团队26 分钟前
10分钟读懂RAG技术
人工智能·后端
编码小笨猪28 分钟前
[ C++ ] | C++11 从左值引用到右值引用
开发语言·c++
Moment29 分钟前
岗位急招,算法实习、音乐生成、全栈、flutter 都有,早十晚六 😍😍😍
前端·后端·面试
jk_10136 分钟前
MATLAB中rmfield函数用法
开发语言·matlab
m0_5557629038 分钟前
单例模式(Singleton Pattern)
开发语言·javascript·单例模式
金融数据出海1 小时前
使用Spring Boot对接印度股票数据源:实战指南
后端
ONE_Gua1 小时前
魔改chromium——源码拉取及编译
前端·后端·爬虫
计算机程序设计开发1 小时前
相机租赁网站基于Spring Boot SSM
spring boot·后端·数码相机·毕设·计算机毕设
__淡墨青衫__1 小时前
Django之旅:第六节--mysql数据库操作增删改查(二)
后端·python·django