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的效果从开始延伸到语句块的结束。这可以大幅减少名称冲突的可能性

相关推荐
Livingbody2 小时前
基于【ERNIE-4.5-VL-28B-A3B】模型的图片内容分析系统
后端
百锦再2 小时前
详细解析 .NET 依赖注入的三种生命周期模式
java·开发语言·.net·di·注入·模式·依赖
风吹落叶花飘荡3 小时前
2025 Next.js项目提前编译并在服务器
服务器·开发语言·javascript
失败又激情的man3 小时前
python之requests库解析
开发语言·爬虫·python
你的人类朋友3 小时前
🍃Kubernetes(k8s)核心概念一览
前端·后端·自动化运维
专注VB编程开发20年4 小时前
常见 HTTP 方法的成功状态码200,204,202,201
开发语言·网络协议·tcp/ip·http
有没有没有重复的名字4 小时前
线程安全的单例模式与读者写者问题
java·开发语言·单例模式
开开心心_Every4 小时前
便捷的电脑自动关机辅助工具
开发语言·人工智能·pdf·c#·电脑·音视频·sublime text
追逐时光者4 小时前
面试第一步,先准备一份简洁、优雅的简历模板!
后端·面试
慕木兮人可5 小时前
Docker部署MySQL镜像
spring boot·后端·mysql·docker·ecs服务器