版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Scala简介目录/Contents01
Scala简介Scala简介01Scala简介Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言、并集成面象对象编程的各种特性。Scala将面向对象和函数式编程结合成一种简洁的高级语言。Scala的静态类型有助于避免复杂应用程序中的错误,它的JVM和JavaScript运行时让你可以轻松地访问庞大的库生态系统来构建高性能系统。Scala简介Scala是一门以Java虚拟机(JVM)为运行环境并将面向对象和函数式编程的最佳特性结合在一起的静态类型编程语言(静态语言需要提前编译的如:Java、c、c++等,动态语言如:js)。Scala特点如下:1、Scala是一门多范式的编程语言,Scala支持面向对象和函数式编程。(多范式,就是多种编程方法的意思。有面向过程、面向对象、泛型、函数式四种程序设计方法。)2、Scala源代码(.scala)会被编译成Tava字节码(.class),然后运行于JVM之上,并可以调用现有的Java类库,实现两种语言的无缝对接。3、Scala单作为一门语言来看,非常的简洁高效。感谢大家的聆听Scala环境准备目录/Contents01
Windows下Scala安装02
IDEA安装Scala
Windows下Scala安装01
Windows下Scala安装在Scala官网(/)单击DOWNLOAD进入下载页面,目前最新的版本是2.13.1,考虑到版本的稳定性和兼容性,本书选择的是2.12.8(/download/2.12.8.html)
Windows下Scala安装下载成功后解压安装包,并配置Scala的环境变量
Windows下Scala安装环境变量配置完成后测试是否安装成功。进入Windows命令行界面,输入scala然后回车IDEA安装Scala02IDEA安装Scala目前主流的开发工具有Eclipse和IDEA两种,在这两个开发工具中可以安装对应的Scala插件来进行Scala开发。现在大多数Scala开发程序员都会选择IDEA作为开发Scala的工具。本书以Windows操作系统为例,讲解如何在IDEA中下载安装Scala插件。
Windows下Scala安装(1)首先下载IDEA工具(/idea/download/other.html),本书选择的版本是2018.2.5,然后打开安装包进行安装,具体的安装步骤这里不做详解。(2)打开IDEA安装Scala插件。本书选择的版本是2018.2.11(scala-intellij-bin-2018.2.11.zip),Scala的插件分为在线安装与离线安装,但是在线安装很慢,所以建议下载后离线安装。打开IDEA后点击【File】下拉按钮,然后选择【Settings】,在弹出的对话框中点击【Plugins】,然后点击【InstallJetBrainsplugin】,在搜索框中输入scala,点击Scala,在对话框右边出现该Intellij对应的Scala版本,从图中看到对应的Scala版本是2018/9/5更新的。
Windows下Scala安装在/plugin/1347-scala/versions找到Scala对应的版本,然后下载即可。
Windows下Scala安装插件下载完成后点击【Installpluginfromdisk】按钮,选择Scala插件所在的路径,然后单击ok。
Windows下Scala安装插件安装完成后需要重启IDEA,Scala插件才会生效,单击【Restart】重启IDEA。感谢大家的聆听Scala基础语法目录/Contents01
Scala数据类型02Scala变量03方法与函数Scala数据类型01Scala数据类型Scala中没有基本数据类型的概念,所有的类型都是对象。Scala的数据类型和Java是类似的,所有Java的基本类型在scala包中都有对应的类,将Scala代码编译为Java字节码时,Scala编译器将尽可能使用Java的基本类型,从而提供基本类型的性能优势。Scala数据类型
AnyVal:所有值类型的父类型。包含Byte、Short、Int、Long、Float、Double、Char、Boolean、Unit。其中Unit类型用来标识过程,也就是没有明确返回值的函数。由此可见,Unit类似于Java里的void。Unit只有一个实例,(),这个实例也没有实质的意义。
AnyRef:Scala里所有引用类(referenceclass)的基类。与其他语言稍微有点不同的是,Scala还定义了底类型,分别是Nothing、Null。
Nothing:在Scala的类层级的最低端;它是任何其他类型的子类型,可以赋值给任何其他类型,用于异常,表明不正常的返回。
Null:所有引用类型的子类型,而Nothing是所有类型的子类型。Null类只有一个实例对象,null,类似于Java中的null引用。null可以赋值给任意引用类型,但是不能赋值给值类型。Scala变量02Scala变量Scala有两种变量,val和var。val类似于Java里的final变量。一旦初始化了,val就不能再被赋值。相反,var如同Java里面的非final变量,可以在它的生命周期中被多次赋值。即,常量或变量。变量:在程序运行过程中其值可能发生改变的量叫做变量。如:时间,年龄。常量:在程序运行过程中其值不会发生变化的量叫做常量。如:数值3,字符'A'。Scala变量在Scala中,声明变量使用关键词“var”,实例如下:varmyVar:String="Foo"varmyVar:String="Too"在这里,myVar使用关键字var声明。这意味着它是一个可以改变值的变量,被称为可变变量。下面是使用val关键字来定义变量的语法:valmyVal:String="Foo"这里,myVal是使用关键字val声明。这意味着,它是不能改变的变量,这是不可变变量。1.变量声明Scala变量2.变量类型引用在Scala中声明变量和常量不一定要指明数据类型,在没有指明数据类型的情况下,其数据类型是通过变量或常量的初始值推断出来的。所以,如果在没有指明数据类型的情况下声明变量或常量必须要给出其初始值,否则将会报错。如下面的实例所示,myVar会被推断为Int类型,myVal会被推断为String类型。varmyVar=10valmyVal="Hello,Scala!"
方法与函数03Scala有方法与函数,二者在语义上的区别很小。Scala中的方法跟Java的类似,方法是组成类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说在类中定义的函数即是方法。Scala中使用val语句可以定义函数,def语句定义方法。方法与函数方法与函数1.方法Scala方法声明格式如下:deffunctionName([参数列表]):[returntype]如果你不写等于号和方法主体,那么方法会被隐式声明为抽象(abstract),包含它的类型于是也是一个抽象类型。Scala方法定义格式如下:deffunctionName([参数列表]):[returntype]={functionbodyreturn[expr]}方法定义由一个def关键字开始,紧接着是可选的参数列表,一个冒号:和方法的返回类型,一个等于号=,最后是方法的主体。以上代码中returntype可以是任意合法的Scala数据类型。参数列表中的参数可以使用逗号分隔。如果方法没有返回值,可以返回为Unit,这个类似于Java的void。2.函数在Scala中,由于使用def语句定义以及调用函数的格式均与方法一样,因此,这里不做赘述。然而,Scala函数与Scala方法也是有区别的。具体如下:(1) 函数可作为一个参数传入到方法中,而方法不行。(2) 在Scala中无法直接操作方法,如果要操作方法,必须先将其转换成函数。(3) 函数必须要有参数列表,而方法可以没有参数列表valfunctionName([参数列表]):[returntype]={functionbodyreturn[expr]}方法与函数方法与函数3.方法转函数方法转函数的格式如下:valf1=m1_在上面的格式中,方法名后面有一个空格和一个下划线。神奇的下划线将m1这个方法变成了函数,而方法名与下划线之间至少有一个空格,没有会报错。感谢大家的聆听Scala面向对象目录/Contents01类和对象02继承03单例对象和伴生对象类和对象01类和对象
类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。继承02继承Scala继承一个基类跟Java很相似,但我们需要注意以下几点:重写一个非抽象方法必须使用override修饰符。只有主构造函数才可以往基类的构造函数里写参数。在子类中重写超类的抽象方法时,你不需要使用override关键字。单例对象和伴生对象03单例对象和伴生对象在Scala中,是没有static这个东西的,所以不能像Java一样直接用类名就可以访问类中的方法和字段。但是它也为我们提供了单例模式的实现方法,那就是使用关键字object,使用关键字object创建对象就是单例对象。感谢大家的聆听Scala基本数据结构目录/Contents01数组02
元祖03集合
数组01
数组Scala提供了一种数据结构叫作数组,数组是一种存储了相同类型元素的固定大小顺序集合。数组用于存储数据集合,但将数组视为相同类型变量的集合通常更为有用。可以声明一个数组变量,例如:numbers,使用numbers[0],numbers[1]和...,numbers[99]来表示单个变量,而不是分别地声明每个变量,例如number0,number1,...等变量。本教程介绍如何使用索引变量声明数组变量,创建数组和使用数组。数组的第一个元素的索引是数字0,最后一个元素的索引是元素的总数减去1。
数组1.数组的定义和使用在scala中数组有两种:定长数组和变长数组。定长数组:由于Array是不可变的,初始化就有了固定的长度,所以不能直接对其元素进行删除操作,也不能多增加元素,只能修改某个位置的元素值,要实现删除可以通过过滤生成新的数组。所以也就没有:add,insert,remove等操作。变长数组:ArrayBuffer是可变的,本身提供了很多元素的操作,当然包括增加,删除操作。
数组2.数组的遍历与Java一样,如果想要获取数组中的每一个元素,需要将数组进行遍历操作。数组的遍历分为for循环遍历、while循环遍历、do...while循环遍历。下面是用for循环对数组进行遍历。元祖02元祖元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据。说的简单点,就是将多个无关的数据封装为一个整体,称为元组。与列表一样,元祖也是不可变的,但与列表不同的是元祖可以包含不同类型的元素,元祖的值是通过将不同的值包含在圆括号中构成的。1.元祖的创建2.访问元祖中的元素访问元祖的元素可以通过数字索引,我们可以使用t._1访问第一个元素,使用t._2访问第二个元素,依次类推。3.元素交换当元组中的元素为两个时,可以通过Tuple.swap方法进行元素交换,生成新的元祖。原先的元祖不会被改变。集合03
集合(1)Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质。(2)对于几乎所有的集合类,Scala都同时提供了可变和不可变的版本,分别位于以下两个包:不可变集合:scala.collection.immutable可变集合:scala.collection.mutable(3)Scala不可变集合,就是指该集合对象不可修改,每次修改就会返回一个新对象,而不会对原对象进行修改。类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 专业厨房设备购销协议2024版B版
- 2024版河南省事业编制人员劳动协议样式版B版
- 二零二五年度大巴车租赁与城市庆典活动策划合同3篇
- 二零二五年度酒吧股份投资及风险控制合同3篇
- 二零二五年度科技园区场地租赁详细协议2篇
- 2024版短期劳务合同范例
- 潍坊护理职业学院《材料分析测试与表征》2023-2024学年第一学期期末试卷
- 太原学院《桥梁工程(一)》2023-2024学年第一学期期末试卷
- 2024年食堂管理员与厨师合同3篇
- 二零二五年建筑工程施工企业工程结算与审计合同2篇
- 智慧农业总体实施方案(2篇)
- 天然甜味剂的开发与应用
- 2024年大学试题(宗教学)-佛教文化笔试参考题库含答案
- 农村生活污水处理站运营维护方案
- 部编版小学语文四年级下册二单元教材分析解读主讲课件
- 2023年译林版英语五年级下册Units-1-2单元测试卷-含答案
- 人教版三年级上册脱式计算200题及答案
- 视觉传达设计史平面设计的起源与发展课件
- 施工管理中的文档管理方法与要求
- 医技沟通与合作课件
- 混凝土企业销售计划书
评论
0/150
提交评论