Scala基础与集合操作

Scala简介

Scala,一种将面向对象编程和函数式编程融为一体的高级语言,正受到越来越多开发者的青睐。它以其简洁、优雅的语法和类型安全的保证,成为了构建大型系统和编写简单脚本的理想选择。

Scala运行于Java平台,能够与Java库无缝集成。由于其在Spark等大数据处理框架中的重要应用,学习Scala对于处理现代数据密集型应用至关重要。

安装Scala

在安装Scala之前,确保系统已安装JDK。以下是Windows和CentOS7下Scala的安装步骤:

Windows安装Scala

  1. 下载Scala安装包scala-2.12.7.msi
  2. 安装并配置环境变量SCALA_HOMEPath
  3. 测试安装是否成功,通过执行scala -version

CentOS7安装Scala

  1. 下载Scala安装包scala-2.12.7.tgz
  2. 解压到/opt/modules/目录。
  3. 配置环境变量SCALA_HOMEPATH
  4. 测试安装是否成功。

Scala基础

变量声明

在Scala中,使用val声明不可变变量,使用var声明可变变量。例如:

val str = "hello scala"
var x, y = "hello scala"

数据类型

Scala是强类型语言,所有变量在声明时都需要指定或推断类型。Scala的类型系统包括:

  • Any:所有类型的根类型。
  • AnyVal:值类型的父类型,如IntDouble等。
  • AnyRef:所有引用类型的父类型,对应Java的Object
  • Nothing:所有类型的子类型,表示没有实例的类型。
  • Null:所有引用类型的子类型,表示空值。

表达式

Scala支持条件表达式和块表达式。例如,块表达式:

val result = {
  val a = 10
  val b = 10
  a + b
}

循环

Scala提供了forwhiledo-while循环。例如,for循环:

for (i <- 1 to 5) println(i)

方法与函数

Scala区分了方法和函数。方法属于类或对象,而函数是一等公民,可以赋值给变量。例如,定义一个方法:

def addNum(a: Int, b: Int): Int = {
  a + b
}

定义一个函数:

val addFunc = (a: Int, b: Int) => a + b

集合操作

Scala强大的集合库提供了丰富的操作,包括数组、列表、映射、元组和集合等。

数组

Scala数组分为定长和变长数组。例如,使用定长数组:

val arr = Array(1, 2, 3)
arr.sum
arr.max

列表

列表分为可变列表和不可变列表。例如,创建不可变列表并进行操作:

val nums: List[Int] = List(1, 2, 3, 4)
val nums2 = 1 +: nums

映射

映射(Map)同样分为可变和不可变类型。创建不可变映射:

val mp = Map(
  "key1" -> "value1",
  "key2" -> "value2"
)

元组

元组是不同类型对象的固定大小集合。定义和访问元组:

val t = (1, "scala", 2.6)
println(t._1)

集合

集合存储不重复的对象。创建和操作集合:

val set = Set(1, 2, 3)
val set1 = set + 4

类和对象

类定义

Scala中类的定义使用class关键字。例如:

class User {
  private var age = 20

  def count() {
    age += 1
  }
}

单例对象

Scala中单例对象使用object关键字定义,可以视为没有构造器的类:

object Person {
  private var name = "zhangsan"
  def showInfo(): Unit = {
    println(s"姓名:$name")
  }
}

抽象类和特质

抽象类使用abstract关键字定义,特质使用trait定义。例如,定义一个抽象类:

abstract class Person {
  var name: String
  def speak()
}

定义一个特质:

trait Pet {
  var name: String
  def run()
}

Scala以其独特的编程范式和强大的集合操作能力,成为了现代软件开发中的重要语言。本文仅触及了Scala编程的皮毛,更多的高级特性和最佳实践等待着我去探索。

posted @ 2024-06-23 13:50  Uitwaaien_wxy  阅读(7)  评论(0编辑  收藏  举报