大数据课程J1——Scala的概述

news2024/11/26 10:27:48

文章作者邮箱:yugongshiye@sina.cn              地址:广东惠州

 ▲ 本章节目的

⚪ 了解Scala的特点;

⚪ 了解Scala的开发环境搭建;

⚪ 了解Scala的开发工具;

一、概述

1.简介

Scala既是面向对象的语言,也是面向函数的语言。scala可以为你在做大量代码重用和扩展是提供优雅的层次结构,并可以通过高阶函数来实现这样的目标。(高阶函数是函数式编程里的特性之一,允许函数作为参数传递,也允许函数作为返回值来返回)

Martin是EPFL(瑞士领先的技术大学,洛桑联邦理工学院)编程研究组的教授。他在整个职业生涯中一直不断追求着一个目标:让写程序这样一个基础工作变得高效、简单、且令人愉悦。

他可能比世界上任何一个人写过更多的Java和Scala代码。他编写了javac,这是目前大部分Java程序员所使用的编译器。他也编写了Scala编译器scalac,可谓是Scala社区飞速发展的基石。

2. Scala语言的特点

Scala并不适于编程的初级课程。相反,它是为专业程序员定制的强力语言。

1. 它是一门现代编程语言,作者是Martin Odersky(javac之父),受到Java、Ruby、Smalltalk、ML、Haskell、Erlang等语言的影响。

2. 它即是一门面向对象(OOP)语言,每个变量都是一个对象,每个“操作符”都是方法。scala语言在面向对象的方面,要比java更彻底。

它同时也是一门函数式编程(FP)语言,可以将函数作为参数传递。你可以用OOP、FP,或者两者结合的方式编写代码。

3. Scala代码通过scalac编译成.class文件,然后在JVM上运行,可以无缝使用已有的丰富的Java类库。即Scala的代码会编译成字节码,运行在Java虚拟机(JVM)上。

4. 接触语言的第一天你就能编出有趣的程序,但是这门语言很深奥,随着学习的深入,你会发现更新、更好的编写代码的方式。Scala会改变你对编程的看法。针对同一任务,可以有很多种不同的实现方式,并且可读性以及性能都有不一样的体现。

3. scala编程的一个示例:

Array(1,2,3,4) 

如何遍历数组中的元素,你应该这么做:

for (i <- Array(1,2,3,4)) println(i)

Array(1,2,3,4).foreach{print(_)}

如果尝试将这些元素转换为新的集合,应该使用for/yield表达式或者map方法:

scala> for (i <- Array(1,2,3)) yield i * 2 

res0: Array[Int] = Array(2, 4, 6)

scala> Array(1,2,3).map(_ * 2)

res1: Array[Int] = Array(2, 4, 6)

比如过滤出一个集合中元素小于4的集合,你可以使用filter方法:

scala> val nums = List(1,2,3,4,5).filter(_ < 4)

res2: nums: List[Int] = List(1, 2, 3)

二、Scala Windows运行环境配置及使用

1. 实现步骤:

1. 双击运行安装。

2. 添加scala安装目录的bin目录路径到系统环境变量中。 

3. 通过cmd命令窗口,输入scala 。

2. 交互模式

可以通过命令行直接输入scala命令,比如:

 

 3. 编译模式

也可以先编写  ***.scala文件,通过执行文件来执行命令,比如:

先在e盘下创建一个hello.scala文件。

print("hello scala");

然后通过cmd执行:

也可以先生成 .scala文件,再编译生成  .class 文件,再执行。

在e盘下,创建demo01.scala文件,内容如下:

object Person{

def main(args: Array[String]): Unit = {

println("hello scala hello world~")

}

}

在e盘路径下进入cmd命令窗口。

然后执行:scalac demo01.scala

执行完后会发现在e盘下多出了对应的class文件。

 

调用执行:scala Person 

4. 使用IDE来开发Scala

解压即可使用 。

 

创建 scala project。

工程创建完毕后,创建scala object 。

编写代码。

 

运行得到结果。 

三、Eclipse介绍

1. 概述

 官方网址: Eclipse Downloads | The Eclipse Foundation

Eclipse是著名的跨平台的自由集成开发环境(IDE)。主要用来Java语言开发,也可以通过安装不同的插件来支持不同的计算机语言,比如C++和Python等开发工具。

注:集成开发环境(IDE,Integrated Development Environment )是用于提供程序开发环境的应用程序,一般包括代码编辑器、编译器、调试器和图形用户界面等工具。集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。所有具备这一特性的软件或者软件套(组)都可以叫集成开发环境。

2. 常见的IDE

1. Microsoft Visual Studio

Microsoft Visual Studio(简称VS)是微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台.如果你在做Windows的应用开发,那么使用Microsoft自己的开发工具肯定没错。Visual Studio产品包含C++、C#和VB.NET语言。还可以为Windows x86、Windows RT和Windows手机做开发。最新版被优化为可用于触摸,方便使用Microsoft Surface平板进行编程的开发者。开发者需要付费购买。

2. Eclipse

Eclipse是著名的跨平台开源集成开发环境(IDE)。最初主要用来Java语言开发,亦有人通过插件使其作为C++、Python、PHP等其他语言的开发工具。Eclipse的本身只是一个框架平台,但是众多插件的支持,使得Eclipse拥有较佳的灵活性,所以许多软件开发商以Eclipse为框架开发自己的IDE。

3. IDEA

全称 IntelliJ IDEA,是java编程语言开发的集成环境。IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、J2EE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、创新的GUI设计等方面的功能可以说是超常的。

 

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

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

相关文章

大数据大屏的分析

今天又进行了大屏的训练&#xff0c;就是很多的报表头是最难的&#xff0c;因为确定了头&#xff0c;就确定了大屏的风格了。 今天的还是有点丑但是也是学习了。报班报班~~~~

高等数学教材啃书汇总重难点(二)导数与微分

本帖更新第二章的重点知识。对于数学一中的证明题&#xff0c;主要集中在第三章的各种中值定理&#xff0c;而其他章节的证明&#xff0c;重要程度较低。因此在日常学习的过程中&#xff0c;学有余力时可以死磕一些不重要的证明题&#xff0c;而压力较大时建议着重攻克。 本章…

c++复习--类和对象

目录 一、 类和对象(熟练掌握) 1. 面向对象和面向过程的理解 2. 面向对象三大特性是什么&#xff1f; 2.1. 封装 2.2 继承 2.3 多态 3. 8个默认成员函数 ​3.1 构造和析构 3.1.1构造函数 3.2 拷贝构造和拷贝赋值 3.2.1 拷贝构造 3.2.2 拷贝赋值 3.3 移动构造和移动赋…

[HDLBits] Exams/m2014 q4b

Implement the following circuit: module top_module (input clk,input d, input ar, // asynchronous resetoutput q);always(posedge clk or posedge ar) beginif(ar)q<1b0;elseq<d;end endmodule

【JavaEE】懒人的福音-MyBatis框架—复杂的操作-动态SQL

【JavaEE】MyBatis框架要点总结&#xff08;3&#xff09; 文章目录 【JavaEE】MyBatis框架要点总结&#xff08;3&#xff09;1. 多表查询1.1 映射表resultMap1.2 只有部分属性跨表查询1.2.1 依照常规去写代码1.2.2 用标签去实现接口 1.3 分多步的解决方案1.4 与多线程的结合 …

案例研究|大福中国通过JumpServer满足等保合规和资产管理双重需求

“大福中国为了满足安全合规要求引入堡垒机产品&#xff0c;在对比了传统型堡垒机后&#xff0c;发现JumpServer使用部署更加灵活&#xff0c;功能特性丰富&#xff0c;能够较好地满足公司在等保合规和资产管理方面的双重需求。” ——大福&#xff08;中国&#xff09;有限公…

【C/C++】STL queue 非线程安全接口,危险!

STL 中的 queue 是非线程安全的&#xff0c;一个组合操作&#xff1a;front(); pop() 先读取队首元素然后删除队首元素&#xff0c;若是有多个线程执行这个组合操作的话&#xff0c;可能会发生执行序列交替执行&#xff0c;导致一些意想不到的行为。因此需要重新设计线程安全的…

研发工程师玩转Kubernetes——启动、存活和就绪探针

启动&#xff08;Startup Probe&#xff09;、存活&#xff08;Liveness Probe&#xff09;和就绪探针(Readiness Probe)有其不同的用途和优先级。 优先级和用途 启动探针&#xff08;Startup Probe&#xff09;用于Pod内程序告诉kubernetes&#xff0c;其准备工作已经做好。…

iOS-砸壳篇(两种砸壳方式)

CrackerXI砸壳呢&#xff0c;当时你要是使用 frida-ios-dump 也是可以的&#xff1b; https://github.com/AloneMonkey/frida-ios-dump frida-ios-dump: 代码中需要更改的&#xff1a;手机中的内网ip 密码 等 最后放到我的砸壳路径里&#xff1a; python dump.py -l查看应用…

python_PyQt5运行股票研究python方法工具V1.2_增加折线图控件

承接【python_PyQt5运行股票研究python方法工具V1.1_增加表格展示控件】 地址&#xff1a;python_PyQt5运行股票研究python方法工具V1.1_增加表格展示控件_程序猿与金融与科技的博客-CSDN博客 目录 结果展示&#xff1a; 代码&#xff1a; 示例py文件代码&#xff08;低位股…

【go语言学习笔记】05 Go 语言实战

文章目录 一、 RESTful API 服务1. RESTful API 定义1.1 HTTP Method1.2 RESTful API 规范 2. RESTful API 风格示例3. RESTful JSON API4. Gin 框架4.1 导入 Gin 框架4.2 使用 Gin 框架4.2.1 获取特定的用户&#xff08;GET&#xff09;4.2.2 新增一个用户&#xff08;POST&am…

一位年薪50W的测试被开除,回怼的一番话,令人沉思

一位年薪35W测试工程师被开除回怼道&#xff1a;“反正我有技术&#xff0c;在哪不一样” 一技傍身&#xff0c;万事不愁&#xff0c;当我们掌握了一技之长后&#xff0c;在职场上说话就硬气了许多&#xff0c;不用担心被炒&#xff0c;反过来还可以炒了老板&#xff0c;这一点…

前后端分离------后端创建笔记(05)用户列表查询接口(上)

本文章转载于【SpringBootVue】全网最简单但实用的前后端分离项目实战笔记 - 前端_大菜007的博客-CSDN博客 仅用于学习和讨论&#xff0c;如有侵权请联系 源码&#xff1a;https://gitee.com/green_vegetables/x-admin-project.git 素材&#xff1a;https://pan.baidu.com/s/…

推荐5款能帮你解决各种问题的神器

​ 今天我要向大家推荐5款超级好用的效率软件&#xff0c;无论是在学习还是办公中都能够极大地提高效率。这些软件可以帮助你解决许多问题&#xff0c;而且每个都是真正的神器。 网速和硬件监控——TrafficMonitor ​ TrafficMonitor 是一款可以在任务栏或桌面悬浮窗显示系统…

配置service管理nginx

一.以源码形式安装的nginx&#xff0c;没有nginx.service 二.切换到service配置目录 三.编辑nginx.service文件 四.启动测试 1.我的开始报了这个问题&#xff0c;说没有这个/var/cache/nginx/client_temp目录&#xff0c;直接创建一个就好了 2.开启/关闭 一.以源码形式安装…

参加NPCon2023 AI模型技术与应用峰会(北京站):作为北京社区主理人的参会感受

参加NPCon2023 AI模型技术与应用峰会&#xff1a;作为北京社区主理人的参会感受 &#x1f3c9;&#x1f3c9;前言&#x1f3c9;&#x1f3c9;活动周边琳琅满目&#x1f3c9;&#x1f3c9;主题演讲&#x1f3c9;&#x1f3c9;亮点&#x1f3c9;&#x1f3c9;总结与展望 博主 默语…

项目管理的艺术:掌握成本效益分析

引言 在项目管理中&#xff0c;我们经常面临着如何有效地使用有限的资源来实现项目目标的挑战。为了解决这个问题&#xff0c;我们需要使用一种强大的工具——成本效益分析。通过成本效益分析&#xff0c;我们可以评估和比较不同的项目选项&#xff0c;选择最具成本效益的项目…

备战2024秋招面试题-最左匹配原则、索引失效情况、算法(最长回文子串)

前言&#xff1a; \textcolor{Green}{前言&#xff1a;} 前言&#xff1a; &#x1f49e;快秋招了&#xff0c;那么这个专栏就专门来记录一下&#xff0c;同时呢整理一下常见面试题 &#x1f49e;部分题目来自自己的面试题&#xff0c;部分题目来自网络整理 给我冲 学习目标&am…

Python爬虫——scrapy_基本使用

安装scrapy pip install scrapy创建scrapy项目&#xff0c;需要在终端里创建 注意&#xff1a;项目的名字开头不能是数字&#xff0c;也不能包含中文 scrapy startproject 项目名称 示例&#xff1a; scrapy startproject scra_baidu_36创建好后的文件 3. 创建爬虫文件&…

【构造】CF1761 E

Problem - 1761E - Codeforces 题意&#xff1a; 思路&#xff1a; Code&#xff1a; #include <bits/stdc.h>using i64 long long;void solve() {int n;std::cin >> n;std::vector g(n, std::vector<int>(n));std::vector<int> deg(n);for (int i …