栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

Scala学习笔记(1)

Scala学习笔记(1)

Scala学习笔记(1) 一、Scala简介

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

    Scala的函数式编程概念让它很容易用简单的组件快速构建出有趣的应用。而它的面向对象编程概念让它能够轻松地构造出更大的系统,并不断地适配新的要求。

    Scala是一门静态语言,运行在标准的Java平台(即JVM)上,可以与所有Java类库无缝协作。

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

    学习Scala的原因:

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

    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:UsersJackson> 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:UsersJackson>
2.定义变量

(1) Scala的变量分为两种:val和var。

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!
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/746459.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号