Scala入门学习

news2024/11/26 2:31:57

Scala入门学习


文章目录

  • Scala入门学习
    • 0. 写在前面
    • 1. 概述
      • 1.1 什么是Scala
      • 1.2 Java and Scala
    • 2. Scala简单使用
      • 2.1 Scala环境安装
      • 2.2 Scala插件安装
      • 2.3 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/

在这里插入图片描述

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环境安装

  • 安装JDK 1.8(此处省略)

  • 安装Scala2.12

    • 下载安装包:https://www.scala-lang.org/download/all.html

    • 解压文件:scala-2.12.11.zip,解压目录要求无中文空格

    • 配置环境变量

在这里插入图片描述

在这里插入图片描述

  • 环境测试

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

[外链图片转存中...(img-ylnY05zT-1676813612868)]

2.2 Scala插件安装

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

在这里插入图片描述

如果下载太慢或者因为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框架的支持。

在这里插入图片描述

  • 创建类

在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 类名

在这里插入图片描述

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

在这里插入图片描述

全文结束!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/722663.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

调整图片大小需要注意哪些问题?在线改图片大小的方法介绍

调整图片大小:打造完美尺寸的视觉体验 为什么需要调整图片大小? 在现代社交媒体和网络传媒中,图片已经成为信息传递和内容表达的重要元素。然而,不同平台和设备对于图片尺寸有着各自的要求。过大或过小的图片尺寸可能导致加载速…

计算机网络_ 1.3 网络核心 (数据交换_电路交换)

计算机网络_数据交换_电路交换 计算机网络_数据交换_电路交换 计算机网络_数据交换_电路交换 最典型电路交换网络:电话网络电路交换的三个阶段 建立连接(呼叫/电路建立)通信释放连接(拆除电路) 独占资源 电路交换网络…

OSPFv2基础01_整体介绍

目录 1.OSPF简介 2.OSPF工作原理简介 3.OSPF基础概念 3.1 OSPF系统 3.1.1 OSPF路由器分类 3.1.2 OSPF区域 (1)OSPF区域分类 (2)OSPF特殊区域 3.1.3 OSPF路由类型 3.2 OSPF报文 3.2.1 OSPF首部格式 3.2.2 OSPF报文格式 …

【软考】数据库理论

文章目录 一、函数依赖闭包 一、函数依赖闭包 视频连接:https://open.163.com/newview/movie/free?pidEGVFE2HM4&midOGVFE3RKQ 其他的概念: 函数依赖集候选关键字闭包

Ribbon快速入门

1.Ribbon 概述 Spring Cloud Ribbon 是一个基于 HTTP 和 TCP 的客户端负载均衡工具,它基于 Netflix Ribbon 实现。通过 Spring Cloud 的封装,可以让我们轻松地将面向服务的 REST 模版请求自动转换成客户端负载均衡的服务调用。 轮询 hash 权重 … 简单…

机器视觉-镜头、相机、光源选型以及打光

机器视觉-镜头、相机、光源选型以及打光从理论到实战 关注林中青木微信公众号,获取更多干货,大佬带你飞~

海睿思分享 | ChatGPT梦幻联动,解锁企业数字化转型新可能

在当今这个充满活力和变化的世界里,人工智能 (AI) 的迅速发展正在改变着我们的生活方式。它不仅提高了我们的工作效率,而且正在重新定义我们的日常生活,以前所未有的方式提高了我们的生活质量。其中,以ChatGPT为代表的语言生成模型…

Golang的数据类型及数据类型间转换整理

Golang 更明确的数字类型命名,支持 Unicode,支持常用数据结构。 Go 语言中数据类型分为: 基本数据类型 和 复合数据类型 基本数据类型有:整型、浮点型、布尔型、字符串 复合数据类型有: 数组、切片、结构体、函数、m…

【QT】——定时器QTimer的使用

目录 常见的函数 构造函数 获取/设置定时器间隔时间 启动/停止定时器 信号 设置定时器的时间的两种方法 设置定时器精度 其他函数 静态函数 实例 QTimer是QT框架中的定时器类型,它的使用方法如下: 定义一个调用QTimer对象,调用st…

华为OD机试真题 Python 实现【找出通过车辆最多颜色】【2023Q1 100分】,附详细解题思路

目录 一、题目描述二、输入描述三、输出描述四、解题思路五、Python算法源码六、效果展示1、输入2、输出3、说明 一、题目描述 在一个狭小的路口,每秒只能通过一辆车,假如车辆的颜色只有3种,找出n秒内经过的最多颜色的车辆数量。 三种颜色编…

深度学习在Li电池RUL、SOH和电池热管理中的研究进展与应用

公众号:尤而小屋作者:Peter编辑:Peter 大家好,我是Peter~ 今天给大家分享一篇关于深度学习在Li电池RUL、SOH和电池热管理中的研究进展与应用的文献综述。文献基本信息介绍: 本文系统介绍了Deep Learning深度学习的不同…

大厂题第1辑——虚函数七题精讲之3:纯虚函数

什么是纯虚函数?什么是抽象类?纯虚函数可以提供实现吗?有什么意义? 题6-什么是纯虚函数? C中有两种继承:接口继承和实现继承。二者的第一个区别是:基类都干了些什么? 如果基类啥实…

15.2 BP神经网络实现图像压缩——基于BP神经网络的图像压缩(matlab程序)

1.简述 BP神经网络的图像压缩原理 数字图像压缩实际上是以较少的比特数有损或者无损的来表示原来像素矩阵的一种图像处理技术,实际上就是减少图像数据中的时间冗余,空间冗余,频谱冗余等等作为目的,从而同过减少上述的一种或者多种冗余的信息而达到更加高效的存储与传输数据.图…

目标检测的评估指标

Precision(精确率/查准率):是指在所有被预测为正的样本中,确实是正样本的占比。当Precision越大时,FP越小,此时将其他类别预测为本类别的个数也就越少,可以理解为预测出的正例纯度越高。Precision越高,误检…

LLM驱动的智能体#Mixcopilot的迭代演进

论文: Generative Agents: Interactive Simulacra of Human Behavior shadow 前阵子在一场线下活动,我们展开了对生成式智能体的分享和研讨,同时也介绍了Earth在实现智能体系统的思考和实践。 最近有一篇文章把LLM驱动的智能体的构成讲解的很…

centos7安装图形化界面

一键安装并生效脚本 #!/bin/bash # 安装X(X Window System) yum groupinstall -y "X Window System"# 安装图形界面软件 yum groupinstall -y "GNOME Desktop"# 设置开机进入图形界面 systemctl set-default graphical.target# 进入图形界面 startx安装 …

Windows | [出现错误 2147942402 (0x80070002) (启动“ubuntu2004.exe”时)]

Windows | [出现错误 2147942402 (0x80070002) (启动“ubuntu2004.exe”时)] C:\WINDOWS\system32\wsl.exe -d Ubuntu-20.04

Verilog基本语法之数据类型

Verilog 是一种用于数字逻辑电路设计的硬件描述语言,可以用来进行数字电路的仿真验证、时序分析、逻辑综合。 既是一种行为级(可用于电路的功能描述)描述语言又是一种结构性(可用于元器件及其之间的连接)描述语言。 …

深度了解机器人行业全貌

产品分类 机器人主要可分为工业机器人、服务机器人和特种机器人,主要产品如下图所示。 机器人主要分类 资料来源:36氪、华泰证券《机械设备行业专题研究-商用服务机器人:曙光已现蓝海可期-220105》。 其中工业机器人的主要种类及应用领域如下图所示。 工业机器人主要类型及…

docker安装失败 应用程序无法启动,因为应用程序的并行配置不正确

问题描述 报错“应用程序无法启动,因为应用程序的并行配置不正确”。 配置:windows10 解决过程 网上的解决方案有三种: 启动windows服务Windows Modules Installer。运行sxstrace.exe。安装visual c相关依赖。下载visual studio installer…