scala 模式匹配与case class

2024-08-27 12:32
文章标签 scala class 模式匹配 case

本文主要是介绍scala 模式匹配与case class,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

当一个类被声明为case class时,编译器会自动进行如下操作:

1.构造器中参数如果没有被声明为var,则默认为val类型;

2.自动创建伴生对象,同时在伴生对象中实现apply方法,这样在使用时就不用显式地使用new对象;

3.伴生对象中同样可以实现unapply(),从而可以将case class应用于模式匹配;

object Test {case class Student(name:String,age:Int,stuentNo:Int) extends Person(name)case class Teacher(name:String,age:Int,teacherNo:Int) extends Person(name)case class Nobody(name:String) extends Person(name)def main(args: Array[String]): Unit = {//case class 会自动生成apply方法,从而省去了new
    val p:Person = Student("sb",18,1024)p match {case Student(name,age,stuentNo) => println(name + ":" + age + ":" + stuentNo)case Teacher(name,age,teacherNo) => println(name + ":" + age + ":" + teacherNo)case Nobody(name) => println(name)}}
}abstract class Person(name:String)

这篇关于scala 模式匹配与case class的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1111679

相关文章

类型信息:反射-Class

在说反射前提一个概念:RTTI(在运行时,识别一个对象的类型) public class Shapes {public static void main(String[] args) {List<Shape> shapes = Arrays.asList(new Circle(), new Square(), new Triangle());for (Shape shape : shapes

react笔记 8-17 属性绑定 class绑定 引入图片 循环遍历

1、绑定属性 constructor(){super()this.state={name:"张三",title:'我是一个title'}}render() {return (<div><div>aaaaaaa{this.state.name}<div title={this.state.title}>我是一个title</div></div></div>)} 绑定属性直接使用花括号{}   注

泛型参Class、Class、Class的对比区别

1.原文链接 泛型参Class、Class、Class的对比区别 https://blog.csdn.net/jitianxia68/article/details/73610606 <? extends T>和<? super T> https://www.cnblogs.com/drizzlewithwind/p/6100164.html   2.具体内容: 泛型参数Class、

c++通用模板类(template class)定义实现详细介绍

有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类:class Compare_int { public : Compare(int a,int b) { x=a; y=b; } int max( ) { return (x>y)?x:y; } int min( ) { return (x&... 有时,有两个或多个类,其功能是相同的,仅仅是数

Python方法:__init__,__new__,__class__的使用详解

转自:https://blog.csdn.net/qq_26442553/article/details/82464682 因为python中所有类默认继承object类。而object类提供了了很多原始的内建属性和方法,所以用户自定义的类在Python中也会继承这些内建属性。可以使用dir()函数可以查看,虽然python提供了很多内建属性但实际开发中常用的不多。而很多系统提供的内建属性实际

SpringBoot启动报错Failed to determine a suitable driver class

两种解决办法 1.在Application类上加 ` @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) package com.example.demo3;import org.springframework.boot.SpringApplication;import org.springframewo

easyswoole not controller class match

not controller class match composer.json 注册 App 这个名称空间了吗?执行过 composer dump-autoload 了吗?存在 Index 控制器,但是文件大小写、路径都对了吗? task socket listen fail 注意,在部分环境下,例如 win10 的 docker 环境中,不可把虚拟机共享目录作为 EasySwoole 的 T

JavaBug系列- Failed to load driver class com.mysql.cj.jdbc.Driver in either of HikariConfig class load

JavaBug系列之Mysql驱动问题 Java医生一、关于错误信息二、如何解决问题 Java医生 本系列记录常见Bug,以及诊断过程和原因 Java/一对一零基础辅导/企业项目一对一辅导/日常Bug解决/代码讲解/毕业设计等 V:study_51ctofx 一、关于错误信息 APPLICATION FAILED TO START Description: Fai

王立平--switch case

@Override public void onClick(View v) {   switch (v.getId()) { 1. case R.id.btn_addPic: break; 2. case R.id.btn_reflectPic: break; default: break; } } 如果黑色字体的break你忘记了写。。。 那么程序就会从进入swit

【scala 安装错误】错误: 找不到或无法加载主类 scala.tools.nsc.MainGenericRunner

错误: 找不到或无法加载主类 scala.tools.nsc.MainGenericRunner 原因: Scala安装路径中包含空格。 解决办法:scala 不要安装在E:\Program Files 这种有空格的目录下,简直坑