Scala入门学习

举报
WHYBIGDATA 发表于 2023/03/18 09:01:53 2023/03/18
【摘要】 Scala入门学习

Scala入门学习



0. 写在前面

  • 操作系统:Windows10
  • JDK版本:jdk1.8
  • Maven版本:Maven-3.5.4
  • Scala版本:Scala-2.12.11
  • IDE工具:IntelliJ IDEA 2019.2.3

1. 概述

Scala官网:https://scala-lang.org/

ppJic5T.md.png

1.1 什么是Scala

从英文的角度来讲,Scala并不是一个单词,而是Scalable Language两个单词的缩写,表示可伸缩语言的意思。从计算机的角度来讲,Scala是一门完整的软件编程语言,那么连在一起就表示Scala是一门可伸缩的软件编程语言。之所以说它是可伸缩,是因为这门语言体现了面向对象函数式编程等多种不同的语言范式,且融合了不同语言新的特性。

Scala编程语言是由联邦理工学院洛桑(EPFL)的Martin Odersky于2001年基于Funnel的工作开始设计并开发的。由于Martin Odersky之前的工作是开发通用Java和Javac(Sun公司的Java编译器),所以基于Java平台的Scala语言于2003年底/2004年初发布。

1.2 Java and Scala

Martin Odersky(马丁·奥德斯基)是狂热的编译器爱好者,他经过长时间的编程后,希望开发一种语言,能够让写程序的过程变得简单,高效,所以当接触到Java语言后,感受到了这门语言的魅力,决定将函数式编程语言的特性融合到Java语言中,由此产生了2门语言(Pizza & Scala),这两种语言极大地推动了Java语言的发展

  • JDK1.5的泛型,增强for循环,自动类型转换等都是从Pizza语言引入的新特性

  • JDK1.8的类型推断,λ(lambda)表达式是从Scala语言引入的新特性

由上可知,Scala语言是基于Java开发的,所以其编译后的文件也是字节码文件,并可以运行在JVM中。

当然,Java和Scala还是有区别的,列举如下:

  • Scala 有一个简洁但可读的语法。
  • 虽然Scala是静态类型的,但通常感觉像是一种动态语言。
  • Scala 是一种纯粹的 OOP 语言,所以每个对象都是一个类的实例,而像运算符这样的符号实际上是方法;这意味着您可以创建自己的运算符++=
  • Scala 有一整套不可变的集合,包括 ListVector 和 不可变的 MapSet实现
  • Scala 中的所有内容都是表达式if语句、for循环、match表达式甚至try / catch表达式等构造都有返回值。
  • 默认情况下,Scala 习语倾向于不可变性:鼓励您使用不可变 () 变量和不可变集合final

2. Scala简单使用

2.1 Scala环境安装

2.png

3.png

  • 环境测试

如果出现如下窗口内容,表示Scala环境安装成功

4.png

2.2 Scala插件安装

Scale的学习使用的是idea工具,默认情况下IDEA不支持Scala的开发,需要安装Scala插件。直接在idea软件中下载插件即可。

5.png

如果下载太慢或者因为idea版本而没有插件的,手动下载:https://plugins.jetbrains.com/plugin/1347-scala/versions,下载后手动导入插件到idea

导入方式

  • 进入plugins界面

  • 找到「instanlled」右边的设置按钮,点开选择 Install Plugin from Disk…

  • 展开选择浏览器下载的压缩包点击确定即可.

  • 重启idea

2.3 Scala第一个案例

  • 创建Maven项目:com.whybigdata.study(test项目名称)

  • 增加Scala框架支持

默认情况,IDEA中创建项目时不支持Scala的开发,需要添加Scala框架的支持。

6.png

  • 创建类

在main文件目录中创建Scala类:com.whybigdata.study.scala.HelloScala

package com.whybigdata.study.scala

object HelloScala {
  def main(args: Array[String]): Unit = {
    System.out.println("Hello Scala")
    println("Hello Scala")
  }
}
  • 代码解析
    • object
    • def
    • args : Array[String]
    • Unit
    • System.out.println
    • println

如果只是通过代码来进行语法的解析,并不能了解其真正的实现原理。scala语言是基于Java语言开发的,所以也会编译为class文件,那么我们可以通过反编译指令javap

javap -c -l 类名

7.png

或反编译工具jd-gui.exe查看scala编译后的代码:

8.png

全文结束!

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。