Scala--01--简介、环境搭建

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 1. Scala简介
    • 1.1 Scala是什么?
        • 官网: [https://scala-lang.org/](https://scala-lang.org/)
        • 官方文档: [https://docs.scala-lang.org/zh-cn/tour/tour-of-scala.html](https://docs.scala-lang.org/zh-cn/tour/tour-of-scala.html)
    • 1.2 Scala 发展历史
    • 1.3 Scala 和 Java 关系
    • 1.4 Scala 语言特点
        • Scala是面向对象的
        • Scala是函数式的
        • Scala是静态类型的
        • Scala是可扩展的
        • Scala的互操作性
  • 2. 环境搭建
    • 2.1 首先确保 JDK1.8 安装成功
    • 2.2 下载对应的 Scala 安装文件 scala-2.12.11.zip
    • 2.3 配置 Scala 的环境变量
        • 类似于java配置==SCALA_HOME==为安装目录。
        • ==添加%SCALA_HOME%\bin==到path环境变量。
    • 2.4 测试
        • println("hello,world!")


1. Scala简介

1.1 Scala是什么?

  • Scala是一门现代的多范式语言,志在以简洁、优雅及类型安全的方式来表达常用的编程模型。它平滑地集成了面向对象函数式语言的特性。
官网: https://scala-lang.org/

在这里插入图片描述

官方文档: https://docs.scala-lang.org/zh-cn/tour/tour-of-scala.html

在这里插入图片描述

1.2 Scala 发展历史

在这里插入图片描述

1.3 Scala 和 Java 关系

在这里插入图片描述

1.4 Scala 语言特点

在这里插入图片描述

Scala是面向对象的
  • 鉴于一切值都是对象,可以说Scala是一门纯面向对象的语言。对象的类型和行为是由类和特质来描述的。类可以由子类化和一种灵活的、基于mixin的组合机制(它可作为多重继承的简单替代方案)来扩展。
Scala是函数式的
  • 鉴于一切函数都是值,又可以说Scala是一门函数式语言。Scala为定义匿名函数提供了轻量级的语法,支持高阶函数,允许函数嵌套及柯里化。Scala的样例类和内置支持的模式匹配代数模型在许多函数式编程语言中都被使用。对于那些并非类的成员函数,单例对象提供了便捷的方式去组织它们。
  • 此外,通过对提取器的一般扩展,Scala的模式匹配概念使用了right-ignoring序列模式,自然地延伸到XML数据的处理。其中,for表达式对于构建查询很有用。这些特性使得Scala成为开发web服务等程序的理想选择。
Scala是静态类型的

Scala配备了一个拥有强大表达能力的类型系统,它可以静态地强制以安全、一致的方式使用抽象。典型来说,这个类型系统支持:

  • 泛型类
  • 型变注解
  • 上、下 类型边界
  • 作为对象成员的内部类和抽象类型
  • 复合类型
  • 显式类型的自我引用
  • 隐式参数和隐式转化
  • 多态方法
  • 类型推断让用户不需要标明额外的类型信息。这些特性结合起来为安全可重用的编程抽象以及类型安全的扩展提供了强大的基础。
Scala是可扩展的

在实践中,特定领域应用的发展往往需要特定领域的语言扩展。Scala提供了一种语言机制的独特组合方式,使得可以方便地以库的形式添加新的语言结构。

很多场景下,这些扩展可以不通过类似宏(macros)的元编程工具完成。例如:

  • 隐式类允许给已有的类型添加扩展方法。
  • 字符串插值可以让用户使用自定义的插值器进行扩展。
Scala的互操作性
  • Scala设计的目标是与流行的Java运行环境(JRE)进行良好的互操作,特别是与主流的面向对象编程语言——Java的互操作尽可能的平滑。Java的最新特性如函数接口(SAMs)、lambda表达式、注解及泛型类 在Scala中都有类似的实现。
  • 另外有些Java中并没有的特性,如缺省参数值和带名字的参数等,也是尽可能地向Java靠拢。Scala拥有类似Java的编译模型(独立编译、动态类加载),且允许使用已有的成千上万的高质量类库。

2. 环境搭建

2.1 首先确保 JDK1.8 安装成功

  • Scala需要依赖Java,访问这里查看特定Scala版本依赖的Java版本。

2.2 下载对应的 Scala 安装文件 scala-2.12.11.zip

在这里插入图片描述

在这里插入图片描述

2.3 配置 Scala 的环境变量

Windows中下载安装配置环境变量:

类似于java配置SCALA_HOME为安装目录。
添加%SCALA_HOME%\bin到path环境变量。

在这里插入图片描述

在这里插入图片描述

2.4 测试

在这里插入图片描述

在这里插入图片描述

println(“hello,world!”)

在这里插入图片描述
计算
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPF布局、控件与样式

视频来源:https://www.bilibili.com/video/BV1HC4y1b76v/ 布局 常用布局属性 HorizontalAlignment:用于设置元素的水平位置VerticalAlignment:用于设置元素的垂直位置Margin:指定元素与容器的边距Height:指定元素的…

音频提取:分享几个常用方法,简单好用

有时候我们会在视频中发现一首非常好听的歌曲,但是我们并不需要视频本身。 这时,我们可以提取视频中的音频,将其转化为音频文件,然后在任何时间、任何地点进行欣赏。 下面给大家分享几个提取视频中音频的几个方法,供…

[嵌入式AI从0开始到入土]16_ffmpeg_ascend编译安装及性能测试

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注:等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间,后期会考虑出视频教程,务必催更,以防我变身鸽王。 第1期 昇腾Altas 200 DK上手 第2期 下载昇腾案例并运行 第3期 官…

css 各种方位计算 - client系列 offset系列 scroll系列 x/y 系列

offset系列 HTMLElement.offsetTop - Web API 接口参考 | MDN 一文读懂offsetHeight/offsetLeft/offsetTop/offsetWidth/offsetParent_heightoffset-CSDN博客 client系列 搞清clientHeight、offsetHeight、scrollHeight、offsetTop、scrollTop-CSDN博客 scroll系列 秒懂scr…

RabbitMQ:1.概述及安装

概述 AMQP协议 MQ Message Queue(消息队列)是在消息的传输过程中保存消息的容器,多用于系统之间的异步通信 AMQP Advanced Message Queuing Protocol(高级消息队列协议)是一个网络协议,2006年AMQP规范发布【类比HTTP】 专门为消…

ubuntu安装zsh及环境配置

ubuntu安装zsh及环境配置 MacBook 安装 zsh 个人很喜欢使用zsh,它的终端显示很清晰,命令都很友好,使用git时,直接可以看到当前分支和修改状态 zsh安装 1.查看当前系统装了哪些shellcat /etc/shells 2.当前正在运行的是哪个版本的shellecho $SHELL 3.安装zshsudo apt-get -y …

【项目笔记】java微服务:黑马头条(day03)

文章目录 自媒体文章发布1)自媒体前后端搭建1.1)后台搭建1.2)前台搭建 2)自媒体素材管理2.1)素材上传2.2.1)需求分析2.2.2)素材管理-图片上传-表结构2.2.3)实现思路2.2.4)接口定义2.2.5)自媒体微服务集成heima-file-starter2.2.6)具体实现 2.2)素材列表查询2.2.1)接口定义2.2.2…

【Algorithm】动态规划和递归问题:动态规划和递归有什么区别?如何比较递归解决方案和它的迭代版本?

【Algorithm】动态规划和递归问题:动态规划和递归有什么区别?如何比较递归解决方案和它的迭代版本? 1. 动态规划(Dynamic Programming,DP)和递归定义及优缺点1.1 递归 (Recursion)定义及优缺点1.2 动态规划 (Dynamic Programming)定义及优缺点2. 动态规划(DP)和递归的特…

platform设备注册驱动模块的测试

一. 简介 上一篇文章编写了 platform设备注册代码,文章地址如下: 无设备树platform驱动实验:platform设备注册代码实现-CSDN博客 本文继续无设备树platform驱动实验,本文对编译好的 设备注册程序进行测试,测试所实…

Linux远程连接本地数据库(docker)

1. 安装docker 参考上一篇文章 CentOS安装Docker 2. Linux中安装Mysql 2.1 docker拉取mysql镜像 拉取镜像 docker pull mysql查看镜像列表 docker images2.2 运行mysql容器 运行一个名字为mysql的mysql容器,其连接端口号为3306,密码为123456 docker r…

运行gazebo机器人模型没有cmd_vel话题

运行赵虚左教程代码出现上诉问题 roslaunch urdf02_gazebo demo03_env.launch 原因:缺少某个包 在工作空间catkin_make编译发现报错 解决: sudo apt-get install ros-noetic-gazebo-ros-pkgs ros-noetic-gazebo-ros-control 下载后再次运行launch文件…

unity学习(59)——选择角色界面--MapHandler1

map内容需要结合客户端和服务器两部分的流程: 1.客户端第一次发出的command的4,选择请求: 2.服务器做出相应: select的内容,最后就是返回当前玩家的playerModel结构体。 3.去客户端里找type 2(user2&#…

服务器数据恢复—服务器硬盘灯显示红色的数据恢复案例

服务器数据恢复环境&故障: 一台服务器中有一组由多块硬盘组建的raid阵列,在运行过程中服务器突然崩溃,管理员检查服务器发现该服务器raid阵列中有两块硬盘的指示灯显示红色。于是,管理员重启服务器,服务器重启后&a…

maven私服搭建详细教程

1、为什么需要私服 如果在公司中多个项目模块中的的公共类用的都是一样的,那么不可能将这些一样的代码写两遍。所以将其中一个项目中的代码打包成私服,然后在另外一个模块中去进行引用。 除此之外,如果大公司中开发人员较多,大家同…

Dev C++和Visual Studio Code哪个好?

Dev C和Visual Studio Code哪个好? Dev C和Visual Studio Code都是常用的集成开发环境(IDE),用于编写和调试代码。它们各自有不同的优点和适用场景。 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C的资…

对模型性能进行评估(Machine Learning 研习十五)

在上一篇我们已然训练了一个用于对数字图像识别的模型,但我们目前还不知道该模型在识别数字图像效率如何?所以,本文将对该模型进行评估。 使用交叉验证衡量准确性 评估模型的一个好方法是使用交叉验证,让我们使用cross_val_score…

Linux从0到1——Linux第一个小程序:进度条

Linux从0到1——Linux第一个小程序&#xff1a;进度条 1. 输出缓冲区2. 回车和换行的本质3. 实现进度条3.1 简单原理版本3.2 实际工程版本 1. 输出缓冲区 1. 小实验&#xff1a; 编写一个test.c文件&#xff0c;&#xff1a; #include <stdio.h> #include <unistd.h…

js【详解】ajax (含XMLHttpRequest、 同源策略、跨域、JSONP)

ajax 的核心API – XMLHttpRequest get 请求 // 新建 XMLHttpRequest 对象的实例 const xhr new XMLHttpRequest(); // 发起 get 请求&#xff0c;open 的三个参数为&#xff1a;请求类型&#xff0c;请求地址&#xff0c;是否异步请求&#xff08; true 为异步&#xff0c;f…

数据结构(二)顺序表和链表

1.线性表 线性表&#xff08;linear list&#xff09;是n个具有相同特性的数据元素的有限序列。 线性表是一种在实际中广泛使 用的数据结构&#xff0c;常见的线性表&#xff1a;顺序表、链表、栈、队列、字符串... 线性表在逻辑上是线性结构&#xff0c;也就说是连续的一条直…

fiddle连接mumu模拟器到adb连接成功,保姆级

前言: 在现代的移动应用程序开发中&#xff0c;模拟器成为了一个必不可少的工具。而Mumu模拟器是一个非常受欢迎的选择&#xff0c;它提供了稳定的性能和丰富的功能。然而&#xff0c;要在模拟器上进行调试和测试&#xff0c;你需要将它与ADB连接起来。 首先&#xff0c;我将解…