case class,样例类,有人也叫条件类。

例如:

case class Person(name:String, age:Int)

好用之处:

1.新建类实例不用new Person(..),直接用Person("qh",20)

2.自动定义好getXX方法,Person("qh",20).name // "qh"

3.提供默认的toString(), Person("qh",20) // "Person(qh,20)"

4.用case class代替tuple

val p = ("qh",20) // p._1 = "qh", p._2 = 20;好处是简洁,但无意义

case class person(name:String, age:Int)

val p = person("qh",20) // p.name = "qh", p.age = 20; 好处是有名字,自说明,可读性强

5.经过优化用于模式匹配

def main(args: Array[String]): Unit = {
val alice = Person("Alice", 25)
val bob = Person("Bob", 32)
val charlie = Person("Charlie", 32) for (person <- List(alice, bob, charlie)) {
person match {
case Person("Alice", 25) => println("Hi Alice!")
case Person("Bob", 32) => println("Hi Bob!")
case Person(name, age) =>
println("Age: " + age + " year, name: " + name + "?")
}
}
}

输出结果为:

Hi Alice!
Hi Bob!
Age: 32 year, name: Charlie?

 总结:

在定义一些大家约定的规范时,最好用case class,比如spark rdd转化为dataframe时,一个常用的办法就是通过case class

初学scala2——case class的更多相关文章

  1. scala2.10.x case classes cannot have more than 22 parameters

    问题 这个错误出现在case class参数超出22个的时候. case classes cannot have more than 22 parameters 在scala 2.11.x版本以下时c ...

  2. PHP 初学之登录查询小case

    说明:如误入本文,请忽略即可,内容仅为记录. 功能:登录(不验证),查询所有列表,删除记录.--很简单,仅为熟悉代码. // MySQL,新建数据库data,导入如下sql ; -- -------- ...

  3. 初学redux笔记,及一个最简单的redux实例

    categories: 笔记 tags: react redux 前端框架 把初学redux的一些笔记写了下来 分享一个入学redux很合适的demo, 用redux实现计数器 这是从阮一峰老师git ...

  4. C#的初学知识点

    初学C# 初见Hello,World 第一句源代码:Console.WriteLine("Hello,World");: 认识.Net: 编译工具:Visual Studio: 主 ...

  5. 初学sheel脚本练习过程

    以下是初学sheel脚本练习过程,涉及到内容的输出.基本的计算.条件判断(if.case).循环控制.数组的定义和使用.函数定义和使用 sheel脚本内容: #! /bin/bashecho &quo ...

  6. 【安富莱STM32H7教程】第1章 初学STM32H7的准备工作

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第1章   初学STM32H7的准备工作 俗话说万事开头 ...

  7. 初学Java的那段日子

    最近因为一个朋友想要学习Java,在帮助他找教程的过程中回想到了我自己当年学习Java的那段岁月,故写了此篇文章总结了一下初学Java所必须要掌握的知识点,然后把一部分常见的面试题罗列出来.给予刚刚开 ...

  8. 转:JVM 内存初学 (堆(heap)、栈(stack)和方法区(method) )

    原文地址:JVM 内存初学 (堆(heap).栈(stack)和方法区(method) ) 博主推荐 深入浅出JVM 这本书 先了解具体的概念:JAVA的JVM的内存可分为3个区:堆(heap).栈( ...

  9. node.js 初学(二)—— 搭建注册/登录服务器

    node.js 初学(二)—— 搭建注册/登录服务器 理论上来说,代码实现在理论和实际上是一样的.但实际上来说,他们不是 做一个最简单的用户注册登录功能 1.接口定义: 注册:/user?act=re ...

随机推荐

  1. VS 2012中消失了的Create UnitTest

    前言:最近正在研究一个新项目的开发工作,这个项目的要求是必须写UnitTest,对于我个人来讲是很不喜欢写UnitTest的感觉这个东西会很大程度的延误开发进度,所以之前项目的UnitTest是能不写 ...

  2. Android Studio中JNI -- 1 -- 配置方法

    1.配置NDK 1.1 下载NDK Android Studio 1.2 配 android-ndk-r10e,不同版本的Studio需要配置不同的ndk,下载完成后,随便解压放至某个文件目录下 1. ...

  3. ES的安装运行

    一.安装,运行 1. 检查java的版本环境 Elasticsearch依赖Java,在书写本文档的时候,推荐使用Oracle JDK 1.8.0_20 或 1.7.0_55以后的版本. 在安装Ela ...

  4. Oracle replace函数使用

    需求是要修改Oracle某列表中把这一列中全部的100换成200: update b_nodes a set a.childs=replace((select childs from b_nodes ...

  5. 解决GDB输出Qt内置类型的显示问题

    自从GDB 7.0之后,就加入了Pretty-Printer的这个概念.简单理解就是他可以让你用Python写一串脚本,然后让gdb去读取这串脚本后,可以自由的输出由你想自己定义的格式.我们直接举个简 ...

  6. C#应用程序中读取Oracle数据库

    前言 最近的任务就是开发了一个功能,要从供应商那边读取数据,然后拿过来,处理以后放到我们自己的数据库中.供应商那边是Oracle数据库,其实不管什么数据我想都差不多,于是我就开始了.由于在家里写的博客 ...

  7. PinchEvent QML Type

    PinchEvent类型在QtQuick 1.1中被添加进来.center, startCenter, previousCenter属性保存了两个触摸点之间的中心位置.scale and previo ...

  8. django中文件(头像)上传

    一些常用的小功能,记录下来 先说一种上传功能. 模板表单 <form enctype="multipart/form-data" name="form1" ...

  9. SQL脚本小笔记

    --表添加字段.说明--- --脚本 alter table 表名 ADD 字段名 FLOAT(类型) NOT NULL Default 0(默认值) EXECUTE sp_addextendedpr ...

  10. C语言怎么计算程序所花时间

    在函数之前和之后取得系统的时间,然后相减就是函数执行时间,不过在取得系统时间的时候,最小单位是微秒 具体代码如下: #include<stdio.h> #include<iostre ...