美文网首页
Scala学习笔记

Scala学习笔记

作者: leeliang | 来源:发表于2021-01-16 17:57 被阅读0次

类-Class

主要记忆点

  1. 会默认给var变量生成get和set方法,比如var age,会默认生成age, age_两个方法
  2. val常量只生成get方法
  3. 若要生成类似Java中的方法,采用@BeanProperty注解到变量上即可
  4. 成员变量如果定义为私有的,则生成的get和set也是私有的
  5. 主构造器:只能有一个,即类名后写上参数。如果没有定义,默认生成一个无参的。
  6. 辅助构造器:名称为this,可以有多个

对象-Object

object在scala中可以实现单例模式,静态方法,静态变量等.scala中没有静态方法或静态字段。object可以实现下面功能

  • 存放工具函数或常量
  • 实现不可变实例
  • 单例模式
  1. 单例对象
object Accounts{
  private var lastNumber = 0
  def newUniqueNumber() = { 
    lastNumber += 1; 
    lastNumber
  }
}

Accounts的构造器在newUniqueNumber首次调用时执行。不能给对象提供构造器参数。

  1. 伴生对象
    类似java中提供实例方法又提供静态方法的类
class Account {
  val id = Account.newUniqueNumber()
  private var balance = 0.0
  def deposit(amount: Double): Unit = {
    balance += amount
  }
}
object Account { // 伴生对象
  private var lastNumber = 0
  private def newUniqueNumber() = {
    lastNumber += 1
    lastNumber
  }
}

可以看到类和其伴生对象可以互相访问私有特性,但是必须存在于同一个源文件中。

  1. 枚举
    Scala中没有枚举类型。object继承Enumeration可以实现枚举
object TrafficLightColor extends Enumeration {
  val Red, Yellow, Green = Value
  // 其中 val Red = Value(0, "Red")
}

可以看到默认Red的Id为0,name就是Red

scala可以在一定源文件中,定义包结构,但是还是推荐采用类似Java中的方式,即一个源文件都默认在一个包下。

  1. 包对象
    可以给包定义一个包对象
package object demo {
  val defaultName = "demo"
}
package demo {
  class Test {
    var name = defaultName // 从包对象中获取常量
  }
}

相关文章

  • Scala集合

    附上Effective Scala:Effective Scala学习笔记摘抄于Twitter scala文档:T...

  • Scala相关文章索引(2)

    基本常识 scala编程第17章学习笔记(1)——集合类型 scala Map类型笔记 scala代码风格指南--...

  • 《Scala 程序设计》学习笔记 说明

    本笔记是我在学习完 Scala 语法后,重学 Scala 时记录的。笔记中的内容侧重 Scala 和 函数式语言的...

  • Scala学习笔记(八) 模式匹配

    1. 模式匹配简介 模式匹配是 Scala 的重要特性之一,前面两篇笔记Scala学习笔记(六) Scala的偏函...

  • Scala基础

    学习笔记摘抄于Twitter scala文档:Twitter.github.ionext:Scala类&对象(一)...

  • Scala笔记

    Scala基础 学习twitter的scala教程的笔记 函数 函数定义,scala语法中可以使用多种方式定义函数...

  • scala 入门学习

    Scala学习笔记: 1.1 scala的基础语法 声明与定义(赋值):声明变量时可以指定类型,不指定也可以自动识...

  • Scala学习笔记

    这篇文章是我跟着视频学,再加上看博客总结的Scala关键知识点,用来开发Spark完全够用。 第一节:基础 变量声...

  • Scala学习笔记

    Scala笔记 基础教程 http://www.runoob.com/scala/currying-functio...

  • scala学习笔记

    Scalable 编程语言特点(可伸缩的,既可以编写小脚本,又可以写服务端的大程序) 纯正的面向对象语言 函数式语...

网友评论

      本文标题:Scala学习笔记

      本文链接:https://www.haomeiwen.com/subject/xeiwaktx.html