`

scala语言基础

 
阅读更多

 

 scala基础(一)

使用class关键字后面跟上类型和构造参数来定义类。

class Greeter(prefix: String, suffix: String) {
  def greet(name: String): Unit =
    println(prefix + name + suffix)
}

 方法greet的返回类型为Unit,也就是说没有任何有意义的东西返回。同Java和C中的void使用方法类似。然后就可以使用关键字new来创建实例了。

 

val greeter = new Greeter("Hello, ", "!")
greeter.greet("Scala developer") // Hello, Scala developer!
 

 

Case Classes

Scala有一种特殊类型的类叫做"case" class。默认情况下,case class是不可变的(immutable),并且是按值比较的(compared by value)。你可以通过case class关键字来定义class classes。

case class Point(x: Int, y: Int) {

}

object PointMain {
  def main(args: Array[String]): Unit = {
    val point = Point(1, 2)
    val anotherPoint = Point(1, 2)
    val yetAnotherPoint = Point(2, 2)

    if (point == anotherPoint) {
      println(point + " and " + anotherPoint + " are the same.")
    } else {
      println(point + " and " + anotherPoint + " are different.")
    }
    // Point(1,2) and Point(1,2) are the same.

    if (point == yetAnotherPoint) {
      println(point + " and " + yetAnotherPoint + " are the same.")
    } else {
      println(point + " and " + yetAnotherPoint + " are different.")
    }
    // Point(1,2) and Point(2,2) are different.
  }
}

 

 对象

对象时它们自身定义的单一实例。你可以认为它们是他们自己的类的单例。你可以使用object关键字定义对象,可以直接使用对象的名字来引用它:

object IdFactory {
  private var counter = 0
  def create(): Int = {
    counter += 1
    counter
  }

  def main(args: Array[String]): Unit = {
    val newId: Int = IdFactory.create()
    println(newId)
    val newerId: Int = IdFactory.create()
    println(newerId)
  }
}

 

Traits

Traits是包含特定字段和方法的类型,多个Traits可以被组合。我们可以用trait关键字来定义traits。感觉类似于java中的接口。trait中的方法可以只有声明,也可以有默认实现。通过extends关键字来扩展trait,通过override关键字来覆盖traits中的实现。

trait GreeterTrait {
  // method in trait only defines the parameter list and return type
  def greetInterface(name: String): Unit

  // method in trait can also have default implementations
  def greet(name: String): Unit = {
    println("Hello, " + name + "!")
  }
}

abstract class DefaultGreeter extends GreeterTrait

class CustormizableGreeter(prefix: String, suffix: String) extends GreeterTrait {
  override def greetInterface(name: String): Unit = {
    println(prefix + name + suffix)
  }

  override def greet(name: String): Unit = {
    println("in greet " + prefix + name + suffix)
  }
}

object GreeterTraitMain {
  def main(args: Array[String]): Unit = {
    val custormizableGreeter = new CustormizableGreeter("How are you, ", "?")
    custormizableGreeter.greet("yuxuecheng")
  }
}

 

 Main Method

main方法是一个程序的入口。Java虚拟机需要一个名为main的主方法,有一个参数——一个字符串数组。用一个对象,我们可以像下面这样定义main方法:

object Main {
  def main(args: Array[String]): Unit =
    println("Hello, Scala developer!")
}

 

 

 

 

 

分享到:
评论

相关推荐

    Scala语言基础|零基础入门.pptx

    ### Scala语言基础知识点详解 #### 引言与背景 Scala是一种多范式的编程语言,它融合了面向对象编程和函数式编程的特点。该语言由Martin Odersky在2003年开发,其名字来源于“Scalable”,意味着它是可伸缩的语言...

    大数据课程-Scala编程基础-2.Scala语言基础_lk_edit.ppt

    Scala作为一门强大的函数式编程语言,因其与Java虚拟机的无缝集成,成为了大数据处理领域中的首选语言之一。本篇将详细讲解Scala的基础语法,包括变量与常量、数据类型、算术运算与操作符重载,以及控制结构语句和...

    大数据技术之Spark编程基础-第2章-Scala语言基础(共155页).pptx

    《Spark编程基础》第二章主要围绕Scala语言的基础知识展开,为理解Spark开发打下坚实的基础。Scala是一门融合了面向对象编程和函数式编程特点的多范式编程语言,由Martin Odersky创建,旨在提高程序员的生产力和代码...

    快学Scala课后习题答案

    这个"快学Scala课后习题答案集合"资源将帮助学习者核对自己的解答,理解错误之处,并加深对Scala语言特性的认识。通过对比答案,学习者可以发现自己的不足,从而针对性地加强学习。无论是在基础概念还是在高级特性上...

    Scala编程实战.zip

    学习Scala语言,不仅仅意味着熟悉新的API,更重要的是一种思维方式的转变。从原有的面向对象编程(OO)到函数式编程(FP)的思想。本书面向实际的使用场景,提供了大量的Scala实例,同时,也给出底层的原理和相关的...

    Scala编程实战PDF

    本书向读者介绍如何省时省力地使用...书中囊括250个实用技巧以及700多个代码实例,覆盖了开始学习Scala语言、类库和工具时*常见的问题。本书可作为学习使用JVM语言的理想参考书,同时也适用于有经验的Scala开发者。

    大数据课程-Scala编程基础-1.Scala语言初识_lk_edit.ppt

    【大数据课程-Scala编程基础-1.Scala语言初识】是针对初学者设计的一门课程,旨在教授如何入门Scala编程,特别适合已有Java基础的学员。Scala是一种在2001年由洛桑联邦理工学院(EPFL)的编程方法实验室研发的语言,...

    基于scala语言的spark操作,包含连接操作mysql,连接hdfs.zip

    Scala 语言基础** Scala 是一种多范式编程语言,融合了面向对象和函数式编程的概念。它的静态类型系统和强类型检查确保了代码的稳定性和安全性。在 Spark 中,Scala API 提供了与 Spark 库紧密集成的接口,使得...

    快学scala第一章习题答案.doc

    一、Scala 语言基础概念 Scala 是一种基于 Java 平台的多范式编程语言,具有面向对象、函数式编程和逻辑编程的特点。Scala 语言的设计目标是提供一种高效、可扩展、灵活的编程语言。 二、Scala REPL 环境 Scala ...

    Scala语言规范.pdf

    《Scala语言规范》是理解这种语言的基础,特别是对于那些想要深入学习Apache Spark或其他基于Scala的大数据处理框架的开发者来说,这本书具有极高的价值。 1. **类型系统**:Scala的类型系统是静态的,这意味着在...

    scala入门书籍

    Scala编程语言抓住了很多开发者的眼球。如果你粗略浏览Scala的网站,你会觉得Scala是一种纯粹的面向对象编程语言,而又无缝地结合了命令式编程和函数式编程风格。Christopher Diggins认为: 不太久之前编程语言还...

    scala编程电子书

    本书《scala编程电子书》是学习Scala语言的实用指南,适用于希望掌握Scala语言基础,并使用它来编写Spark程序的开发者。 Scala语言由Martin Odersky、Lex Spoon和Bill Venners共同创立,并通过他们的公司Artima出版...

    大数据Spark实战高手之路1---熟练的掌握Scala语言系列课程

    #### Scala语言基础 1. **基本语法**: - **变量声明**:在Scala中,`val`用于声明不可变变量(即常量),`var`用于声明可变变量。 - **类型推断**:Scala能够自动推断变量类型,简化代码编写。 - **函数定义**...

    scala语言教程及规范

    本教程旨在帮助初学者深入理解Scala语言,并掌握其核心概念和最佳实践。 首先,Scala的基础语法与Java有许多相似之处,因为它们都是基于JVM的语言。然而,Scala引入了许多创新特性,如模式匹配、高阶函数、匿名函数...

    尚硅谷大数据之Scala语言核心编程.pdf

    Scala是一种多范式编程语言,设计初衷是融合面向对象编程和函数式编程的特性。...整本书是对Scala语言核心知识点的全面梳理,旨在帮助读者快速掌握Scala编程技能,为大数据开发工作打下坚实的基础。

    scala-2.12.6.tgz

    1. Scala语言基础: Scala由Martin Odersky在2003年设计,其名称来源于"Scalable Language"的缩写,旨在提供一个高效、灵活且可扩展的编程平台。它的语法简洁,支持高阶函数、模式匹配、匿名函数、类型推断等特性,...

    尚硅谷_韩顺平_Scala语言核心编程_PDF密码解除1

    《Scala语言核心编程》是尚硅谷教育机构韩顺平老师主讲的一门课程,主要针对Scala这门多范式编程语言进行深入讲解。Scala是一种静态类型的编程语言,它融合了面向对象和函数式编程的概念,设计目标是提供一种简洁、...

    Scala语言入门

    ### Scala语言入门知识点详解 #### 一、Scala简介 Scala是一种多范式的编程语言,它融合了面向对象编程和函数式编程的特点。Scala语言的设计旨在提高代码的可读性和表达能力,同时保持高性能。Scala运行在Java平台...

Global site tag (gtag.js) - Google Analytics