Scala简介

Scala是一种多范式的编程语言,其设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。Scala是编写大数据框架Spark的语言,随着大数据的兴起,越来越多的人开始学习Scala

Scala语言的优点

优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。
速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多。
能融合到Hadoop生态圈:Hadoop现在是大数据事实标准,Spark并不是要取代Hadoop,而是要完善Hadoop生态。JVM语言大部分可能会想到Java,但Java做出来的API太丑,或者想实现一个优雅的API太费劲。

Scala环境安装

1.安装JDK

Scala是运行在Java虚拟机JVM上的一种编程语言,所以安装Scala编译器前要先安装JDK

2.安装Scala编译器

打开Scala官网,进入Download页面

由于现有的Spark项目一般都用的比较成熟的Scala2.10.x版本,所以为了方便日后学习Spark,我选择了下载较老的2.10版本,在Other Releases中选择2.10版

Windows用户可以选择.msi后缀的文件来安装Scala,可以一键安装不用自己手动配置环境变量

IDEA安装Scala插件

安装完Scala编译器后还需要给IDE安装对应的插件才能使用Scala,我是用的IDE是IDEA

打开IDEA插件页,File->Setting->Plugins,搜索Scala,下载安装,如果速度太慢,也可以自己去Jetbrains插件官网下载然后采用本地安装

Jetbrains官网的Scala插件版本

红圈中选项进行本地安装

一.Scala变量

Scala是强类型语言,和Java一样,有7种数值类型Byte、Char、Short、Int、Long、Float和Double(无包装类型)和一个Boolean类型

Scala变量的定义

Scala编译器会自动推断变量的类型(和Python一样),也可以指定类型

有两种方法定义变量,val和var,val定义的变量是不可变的,相当于java中的final修饰(比java简洁太多),var定义的变量是可变的,使用中尽可能多使用val定义变量

object VariableDemo {def main(args: Array[String]) {//定义常量val i = 1//定义变量var s = "hello"//自己指定变量类型,不指定Scala编译器会自动推断变量的类型val str: String = "itcast"}
}

二.Scala表达式

Java中的各种控制语句在Scala中都简化为表达式,包括条件表达式,循环表达式等。Scala表达式都有返回值,scala中有个Unit类,写做(),相当于Java中的void

2.1 条件表达式

Scala条件表达式的一般形式:

//如果x>A,则将A赋值给a变量,否则将B赋值给a变量
val a = if (x > A) A else B

条件表达式的其他使用示例:

object ConditionDemo {def main(args: Array[String]) {val x = 1//判断x的值,将结果赋给yval y = if (x > 0) 1 else -1println(y)//支持混合类型表达式,即可以返回不同类型的变量值val z = if (x > 1) 1 else "error"println(z)//缺省else,相当于if (x > 2) 1 else ()val m = if (x > 2) 1println(m)//执行结果和上式一样val n = if (x > 2) 1 else ()println(n)//if和else ifval k = if (x < 0) 0else if (x >= 1) 1 else -1println(k)}
}

2.2 块表达式

在Scala中使用{ }来构成一个块表达式,块表达式中可包含数量不等的表达式,块的值是块中最后一个表达式的值,块表达式示例:

def main(args: Array[String]) {val x = 0//将块表达式的值赋给resultval result = {if (x < 0){-1} else if(x >= 1) {1} else {"error"}}print(result)
}

2.3 循环语句

Scala中可以用while和for两种方式实现循环,但大多场景会用更灵活的for循环

2.3.1 普通for循环

for循环的格式:
A表示被遍历的对象,可以是表达式,数组或集合

for (i <- A)//for循环中的执行语句需要比for表达式退一个tab(和Python一样)print(i)
object ForDemo {def main(args: Array[String]) {//被遍历体是表达式//表达式1 to 10表示一个Range(区间),用来产生随机数for (i <- 1 to 10)println(i)//被遍历体是数组val arr = Array("a", "b", "c")for (i <- arr)println(i)}}

2.3.2 高级for循环

for循环表达式可以很复杂,被循环体可以是一个生成器,生成器可以带一个条件

object ForDemo {def main(args: Array[String]) {//注意:if前面没有分号for(i <- 1 to 3; j <- 1 to 3 if i != j)print((10 * i + j) + " ")}}

2.3.3 for推导式

如果for循环的循环体以yield开始,则该循环会构建出一个集合

object ForDemo {def main(args: Array[String]) {//每次迭代生成集合中的一个值val v = for (i <- 1 to 10) yield i * 10println(v)}} 

三.Scala中的方法和函数

3.1 Scala方法

3.1.1 方法的定义

下式从左到右各部分含义分别为:使用def关键字定义方法,方法名称为method1,参数为x,y,均为Int类型,方法返回值为Int型,方法的方法体为x*y

def method1(x: Int, y: Int) : Int = x*y

3.1.2 方法的返回值

方法的返回值类型可以不写,编译器可以自动推断出来,但是递归函数必须指定返回类型

3.1.3 方法在Scala中的应用

Scala中的操作符本质都是一个方法,如+ - * / % & | ^ >> <<等操作符,底层都是用方法实现的
a + ba.+(b)的简写,a + b本质上是a调用了一个名称为“+”的方法,方法参数为b

所以,a.方法(b)可以简写成 a 方法 b

3.2 Scala函数

3.2.1 函数的定义

定义名称为function1的函数,返回值为val类型变量,参数为x,y,均为Int类型,方法的方法体为x*y

val function1 = (x: Int, y: Int) => x*y

3.3 Scala方法和函数的相互转化

将方法转化为函数:

//只需要在方法名后加下划线“_”
val funtion1 = methon1 _

Scala基础-01-Scala环境安装及基础语法(变量,函数)相关推荐

  1. Java基础-配置开发环境-安装JDK

    Java基础-配置开发环境-安装JDK 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机基础知识 1>.计算机的组成 计算机有硬件与软件组成. 2>.硬件: 硬 ...

  2. 【2022软件创新实验室暑假集训】Java环境安装与基础介绍

    Java环境安装与基础介绍 文章目录 文章目录 Java环境安装与基础介绍 文章目录 Java 简介 主要特性 关于语言学习的选择 Python Java Go&Rust Java环境配置 J ...

  3. Spark学习笔记[1]-scala环境安装与基本语法

    Spark学习笔记[1]-scala环境安装与基本语法   正所谓工欲善其事必先利其器,Spark的开发语言不是java而是scala,虽然都是运行于JVM,但是两门语言的基本特性还是有些不一样,这里 ...

  4. 【Python自动化运维】Python环境安装及基础语法

    [Python自动化运维]Python环境安装及基础语法 1. Python环境安装 2. Python基础语法 1. Python环境安装   pyenv官方安装手册:https://github. ...

  5. windows环境下32位汇编语言程序设计 90盘_Python 0基础详细教程 环境安装01

    Python语言有什么用,首先让大家了解Python语言的基本知识: Python语言是一种解释型,面向对象,动态数据类型的高级程序设计语言,Python语言是数据分析师的首选数据分析语言,通过数据挖 ...

  6. Katalon Studio自动化测试框架使用【1】--- 环境安装以及基础配置(MacOS)

    一.Katalon Studio简介 Katalon Studio是一款免费的自动化测试工具,可以安装在windows.macOS.Linux操作系统上,结合了selenium和appium测试框架, ...

  7. Python基础概念_1_环境安装

    环境安装 2 环境安装 在开始Python学习前,我们先要搭建开发环境,正所谓巧妇难为无米之炊.那么什么是开发环境呢?通俗的理解假设我们要做饭,那么得有锅.油.燃气.菜这些基础工具和素材,有了它们我们 ...

  8. Scala入门_开发环境安装

    开发环境安装 学习如何编写scala代码之前,需要先安装scala编译器以及开发工具 Java程序编译执行流程 Scala程序编译执行流程 scala程序运行需要依赖于Java类库,必须要有Java运 ...

  9. 01.jupyter环境安装

    jupyter notebook环境安装 一.什么是Jupyter Notebook? 1. 简介 Jupyter Notebook是基于网页的用于交互计算的应用程序.其可被应用于全过程计算:开发.文 ...

  10. Java基础01 Java的安装和配置

    超详细的Java知识点路线图 前言 一直想写一个系列文章,包含:Java基础.JavaWeb.Java企业级框架.分布式.就业等,希望能帮助到想学Java的朋友,自己也能获得提升,这是个大工程,千里之 ...

最新文章

  1. 跟益达学Solr5之Schema.xml详解
  2. Action请求后台出现Response already commited异常解决方法
  3. React Native在Android当中实践(五)——常见问题
  4. 如何建立自己的知识体系?(摘)
  5. 简单的C#字符串数组转字符串方法
  6. vue created 调用方法_vue中的eventBus会产生内存泄漏吗
  7. java 声明是否合法,一个合法的Java源程序中定义了4个类,其中属性为public的类可能有( )个...
  8. ios 高德地图加载瓦片地图_OpenLayers加载谷歌地球离线瓦片地图
  9. iOS 日期(NSDate)的常用操作总结
  10. android中的ActionBar和ToolBar
  11. thinkphp5引入调用外部类
  12. css grid随页面大小_前端三大布局,float,flex,grid的介绍。
  13. esxi能直通的显卡型号_显卡刷bios教程
  14. office 打开wps乱_wps打开word的乱码咋办?
  15. Android集成阿里热修复(Hotfix)
  16. 阿里云迁移工具推荐最佳实践:物理服务器迁移到阿里云
  17. 上海社保基数又上涨,对积分、落户有什么影响?
  18. oracle 实现等额本息,【oracle存储过程】实现生成等额本息的还款计划
  19. Mac取证你需要了解的那些事!
  20. 安卓逆向 -- Xposed模块编写

热门文章

  1. c语言课设代写一般多少钱_海南彩礼钱一般给多少 海南娶媳妇要多少钱
  2. 哈希表与区块链的简单介绍
  3. js 加入收藏,设为首页
  4. 论文笔记_S2D.66_ICRA_2021_LVI-SAM: 紧耦合的激光视觉惯导SLAM系统
  5. 线性表_循环链表(增减删查 + 约瑟夫环问题 代码实现 )
  6. ubuntu14.04 出现symbol lookup error
  7. 基于Java的Heritrix爬取网页
  8. 目标检测回归损失函数总结
  9. 第十章第二节 阿基米德原理
  10. layui,返回的数据不符合规范,正确的成功状态码 (code) 应为:0