Scala学习笔记(1)

Scala是一门融合面向对象和函数式编程的静态类型语言,运行于JVM上并与Java兼容。其特点包括纯面向对象和函数式编程,支持一等函数和映射操作。学习Scala主要是为了理解Spark分布式计算框架,Spark源码由Scala编写。本文介绍了Scala的环境配置、变量定义(val和var)、函数定义,并展示了函数式编程在Spark中的重要性。
摘要由CSDN通过智能技术生成

Scala学习笔记(1)

一、Scala简介
  1. Scala是一门综合了面向对象和函数式编程概念的静态类型的编程语言。

    • Scala的函数式编程概念让它很容易用简单的组件快速构建出有趣的应用。
    • 而它的面向对象编程概念让它能够轻松地构造出更大的系统,并不断地适配新的要求。
  2. Scala是一门静态语言,运行在标准的Java平台(即JVM)上,可以与所有Java类库无缝协作。

    • Scala在与Java的语法比较相似,Scala可以看作在Java的基础上封装了更丰富的操作方法,比Java更具面向对象的特色,同时具备函数式编程语言特点的一门高级语言。
  3. 学习Scala的原因:

    • 学习Scala语言的动机很纯粹,就是为了进一步掌握大数据领域中“大名鼎鼎”的Spark分布式计算框架。Spark是由Scala编写的,阅读Spark源码需要学习Scala。同时编写优质的Spark应用离不开Scala。
  4. Scala的特点

    (1) Scala是面向对象的

    • 在Scala中,它对面向对象的实现是纯的:每个值都是对象,每个操作都是方法的调用。举例来说,在Scala中1+2,实际上是调用Int类里定义的名为+的方法,
      这里的+并不是简单的操作符,是属于Int类里的方法。
    • 与其它语言相比,在组装对象方面,Scala更为高级。Scala的特质(trait)就是个典型的例子。

    (2) Scala是函数式的

    • 函数式编程以两大核心理念为指导:

      • 第一个理念是函数是一等(first-class)的值。在函数式编程中,函数值的地位跟整数、字符串等是相同的。
        • 可以将函数作为参数传递给其它函数,作为返回值返回它们,或者将它们保存在变量里。
        • 作为一等值的函数提供了对操作的抽象和创建新的控制结构的便利。
      • 第二个核心理念是程序中的操作应该将输入值映射成输出值,而不是当场修改数据。
    • Spark编程的核心思想是函数式编程。


二、Scala快速入门
1. 环境的配置

(1) Scala环境的配置-csdn链接
(2) 使用Scala解释器

  • 配置好Scala环境后,在powershell中输入scala,即可使用Scala解释器执行Scala代码,键入:quit退出Scala解释器。
PS C:\Users\Jackson> scala
Welcome to Scala 2.13.7 (OpenJDK 64-Bit Server VM, Java 16.0.1).
Type in expressions for evaluation. Or try :help.

scala> :quit
PS C:\Users\Jackson>
2.定义变量

(1) Scala的变量分为两种:valvar

  • val(value): 值类型,跟Java的final变量类似,一旦初始化就不能被重新赋值。
  • var(variable): 变量类型,整个声明周期内,var类型可以被重新赋值。
scala> val hello = "Hello, world!";
val hello: String = Hello, world!

scala>

(2) 声明变量,Scala声明变量的方式与Java有一个显著的区别,Scala支持类型推断,如上例中Scala可以推断出hello属于String类型的变量。

  • 同时,Scala支持显式定义变量,语法形式为

    var/val name: type = value例如,

scala> val hi: String = "Hello, Scala!";
val hi: String = Hello, Scala!

scala>

(3) Scala中,每行末尾的分号不是必须的,此时会以

3. 定义函数

(1) 函数的定义格式

def sum(x: Int, y: Int): Int = {
  return x + y;
}
  • 函数通过def关键字定义,紧接着函数名和参数列表,参数列表中必须定义参数的类型。然后是:加返回值类型,=加函数体。
  • Scala函数可以省略return关键字,这时会以下一行的计算结果作为返回值,例如下面的例子中省略return关键字:
def max(x: Int, y: Int): Int = {
  if(x > y) {
    x;
  }
  else{
    y;
  }
}
  • 简洁风格的函数,Scala支持用更简约的风格定义短函数
def mul(x: Int, y: Int) = { x * y }
scala> def max(x: Int, y: Int) = {if (x>y) x else y}
def max(x: Int, y: Int): Int

scala> max(2, 3)
val res0: Int = 3

(2) 无输入的函数

  • 定义无输入的函数

    若函数无输入,可以省略

scala> def welcome = println("Hello!");
def welcome: Unit

scala> welcome
Hello!
scala> def hi = "hi";
def hi: String

scala> hi
val res0: String = hi
scala> def hello() = "hello";
def hello(): String

scala> hello()
val res1: String = hello

啊这。。。是的,我也有点惊讶,竟然可以简约到这种地步。

(3) 无返回值的函数,无返回值类型的函数,显示定义时返回值使用Unit类型。

scala> def welcome(): Unit = {
     | println("Hello!")
     | }
def welcome(): Unit

scala> welcome()
Hello!
回值使用`Unit`类型。
```scala
scala> def welcome(): Unit = {
     | println("Hello!")
     | }
def welcome(): Unit

scala> welcome()
Hello!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值