`

Scala Tagging Traits & Case Objects

 
阅读更多

原创转载请注明出处:http://agilestyle.iteye.com/blog/2334895

 

标记特征是一种将类或对象组织到一起的方式

package org.fool.scala.traits

sealed trait Animal

case object Panda extends Animal

case object Tiger extends Animal

case object Lion extends Animal

object Animal {
  val values = Vector(Panda, Tiger, Lion)
}

object TaggingTrait extends App {
  def display(a: Animal) = a match {
    case Panda => s"It's $a"
    case Tiger => s"It's $a"
    case Lion => s"It's $a"
  }

  println(Animal.values.map(display))
}

Note:

The hallmark of a tagging trait (Color, in this case) is that it only exists to collect types under a common name, thus it typically has no fields or methods.The sealed keyword on line 4 tells Scala “there are no subtypes of Color other than the ones you see here” (all subtypes of a sealed class must live in the same source file). Scala warns you that a “match may not be exhaustive” if you don’t cover all the cases. e.g.

...

object TaggingTrait extends App {
  def display(a: Animal) = a match {
    case Panda => s"It's $a"
    case Tiger => s"It's $a"
    //case Lion => s"It's $a"
  }

  println(Animal.values.map(display))
}

Console Output


 

Console Output

case对象就像case类一样,只是它产生的是对象而不是类。当case对象转换为String时,将会获得模式匹配的好处以及友好输出。


 

参考资料:

Scala编程思想

 

  • 大小: 82 KB
  • 大小: 10.6 KB
分享到:
评论

相关推荐

    hadoop-3.0.0&&spark-2.4.0&&scala-2.13.3&&maven-3.6.3

    标题中的"hadoop-3.0.0&&spark-2.4.0&&scala-2.13.3&&maven-3.6.3"涵盖了四个重要的IT技术组件:Hadoop 3.0.0、Spark 2.4.0、Scala 2.13.3和Maven 3.6.3。这些组件都是大数据处理和开发领域中的关键工具,下面将详细...

    快学Scala & Scala完整版 & 深入理解JVM 合集(带目录)

    Scala是一种强大的多范式编程语言,它融合了面向对象和函数式编程的特性,使得它在处理并发和大规模数据处理时表现出色。本合集包含了关于Scala和Java虚拟机(JVM)的深入学习资源,以及阿里巴巴的Java编程规范,为...

    快学Scala完整版&Scala编程(中文版)&Scala程序设计-多线程编程实践

    这个压缩包包含了三本关于Scala学习的重要资源,分别是《快学Scala》完整版书籍、《SCALA程序设计-JAVA虚拟机多核编程实战》以及《Scala编程》的中文版。 《快学Scala》完整版书籍是为初学者准备的一份详尽指南,...

    scala学习视频&pdf;讲义

    scala学习视频资料以及讲义,从基础的环境配置开始讲起,以及后面具体案例开发.适合新手学习,还有具体讲义对照复习查看。

    Scala教程&开发.chm

    Scala教程&开发.chm 内容是用爬虫爬下来的,整理为chm方便学习.

    Scala 专题教程 - Case Class和模式匹配-内含源码以及设计说明书(可以自己运行复现).zip

    本教程将深入探讨Scala中的Case Class和模式匹配这两个关键概念,通过实例和源代码帮助你理解和掌握它们。下面是对每个知识点的详细说明。 **Case Class** 在Scala中,Case Class是一种特殊的类,它被设计用于模式...

    Scala and Spark for Big Data Analytics.pdf

    Chapter 1, Introduction to Scala, will teach big data analytics using ... methods, classes, and objects in Scala; packages and package objects; traits and trait linearization; and Java interoperability.

    scala-traits-slides:关于 Scala 特征的幻灯片

    在Scala中,特征(Traits)是一个非常重要的概念,它提供了一种方式来实现代码重用和接口扩展,类似于Java中的接口和部分C++的混合类型。本讲座主要探讨Scala的特征及其在实际开发中的应用。 特征在Scala中的主要...

    scala实战高清讲解

    - 枚举与case类:Scala中的枚举和case类为模式匹配提供了便利,使代码更简洁、可读性更强。 - 解构:模式匹配允许对复合类型进行解构,提取出内部元素。 7. **特质(Traits)** - 特质是Scala的多重继承机制,...

    scala&spark;

    【Scala与Spark简介】 Scala是一种多范式的编程语言,它结合了面向对象和函数式编程的概念,由瑞士联邦理工学院洛桑(EPFL)的Martin Odersky在2001年创立。Scala的设计目标是提供一种简洁、类型安全且能够表达复杂...

    Programming Scala- Scalability = Functional Programming + Objects, 2 edition

    注意是Programming Scala的第二版,而不是Programming in Scala的第二版,更注重于与Spark相关的知识!强烈推荐!Programming Scala- Scalability = Functional Programming + Objects, 2 edition

    scala sdk scala-2.12.3

    Scala SDK,全称为Scala Software Development Kit,是用于开发Scala应用程序的核心工具集。Scala是一种多范式的编程语言,融合了面向对象和函数式编程的特点,它运行在Java虚拟机(JVM)上,能够充分利用Java生态...

    techsupport_ext4_scala:由 scala & play2.1 & extjs 4.2 重建的技术支持

    【techsupport_ext4_scala: 用 Scala、Play2.1 和 ExtJS 4.2 构建的技术支持系统】 这个项目"techsupport_ext4_scala"是一个基于现代Web技术的技术支持平台,它利用了Scala编程语言的强大功能,结合了Play2.1框架的...

    scala3 scala3 scala3 scala3 scala3

    Scala3,也被称为Scala 3或Dotty,是Scala编程语言的一个重大更新,旨在提高其简洁性、可读性和类型安全性。Scala3的发布标志着该语言的进一步成熟,它引入了一系列改进,旨在解决早期版本中的一些痛点,同时保持对...

    scala-2.12.6.tgz

    Scala还引入了一些独特的语言特性,如特质(Traits)、隐式转换和case类,这些帮助开发者实现更简洁、更具表达力的代码。 10. 社区与文档: Scala有一个活跃的社区,提供了丰富的开源库和工具,以及详尽的官方...

    scala&spark;-v4.0

    ### Scala与Spark:掌握未来的大数据处理利器 #### Scala初印象及重要性 Scala作为一种集函数式编程与面向对象编程于一体的现代编程语言,其诞生旨在解决传统编程语言(特别是Java)在分布式计算环境下遇到的问题...

    scala-2.12.14.zip&scala-2.12.11.tgz Linux版本压缩包.rar

    Scala是一种强大的多范式编程语言,它融合了面向对象编程和函数式编程的概念,被广泛应用于大数据处理和分布式计算领域,特别是在Apache Spark等框架中。标题提到的"scala-2.12.14.zip&scala-2.12.11.tgz"是Scala的...

    Scala考试题1

    - Scala 有更强大的模式匹配,Java 需要使用 switch-case 或者 if-else。 15. **Java 集合与 Scala 集合的转换**: - 导入 `scala.jdk.CollectionConverters`,可以使用 `.asJava` 和 `.asScala` 转换。 16. **...

    scala2.10.4

    2. **新特性:Traits**:Scala 的 Traits 提供了一种实现多继承的方式,允许类或者特质组合多个行为。在 2.10.4 版本中,对 Traits 的支持更加完善,包括混合类型检查和优化。 3. **函数式编程强化**:Scala 2.10 ...

Global site tag (gtag.js) - Google Analytics