【Scala】9、Trait、Match、CaseClass和偏函数
抽象类和接口的合体trait 1
/*
* 1、trait不可以传参
* 2、类继承多个trait的时候 第一个关键字用extends 第二个用with
* */
trait Read{def read(name:String): Unit ={println(s"$name is reading... ")}
}
trait Listen{def listen(name:String): Unit ={println(s"$name is listen... ")}
}
class Human() extends Read with Listen {}object Test_Trait {def main(args: Array[String]): Unit = {val human = new Human()human.read("alalla")human.listen("lalal")}
}
抽象类和接口的合体trait 2
/*
* trait类似于抽象类 可以有方法的实现 也可以只有方法的声明 子类去实现就好了
* */
trait PointEau{def isEqu(o:Any):Booleandef isNotEqu(o:Any):Boolean = !isEqu(o)
}
class Point(xx:Int,xy:Int) extends PointEau {val x=xxval y=xyoverride def isEqu(o: Any): Boolean = {//需要是一个点 并且x值相等o.isInstanceOf[Point] && o.asInstanceOf[Point].x==this.x}
}object Test_Trait {def main(args: Array[String]): Unit = {val point1 = new Point(1, 2)val point2 = new Point(1, 4)println(point1.isEqu(point2))}
}
模式匹配Match
package com.yxx/*
* Match 模式匹配
* 1、case_ 匹配任何 放到最后
* 2、match即可以匹配类型 又可以匹配值
* 3、匹配过程有隐式类型的转换
* 4、从上往下匹配,匹配上了之后会自动终止
* 5、模式匹配外面的{}可以省略
* */object Test_Natch {def main(args: Array[String]): Unit = {val tp=(1,1.2,"abc",'a',true)val iterator = tp.productIteratoriterator.foreach(matchFun)}def matchFun(o:Any): Unit ={o match{case 1=>{println("这个是1")}case i:Double=>{println(s"这个是double 值是$i")}case s:String=>{println(s"这个是String 值是$s")}case _=>{println("No Match...")}}}
}
样例类case class
/** 使用case关键字定义的类就是样例类 他是特殊的类* 实现了构造函数的getter方法(因为参数默认是val的) 当参数是var的时候 还会实现参数的setter方法* 样例类是默认实现了toString equals copy和hashCode方法的* 样例类可以new也可以不new* 只有构造函数的样例类 在声明的时候可以不加花括号* */case class A(name:String,age:Int){}def main(args: Array[String]): Unit = {val a1 = A("a", 1)val a2 = A("a", 1)println(a1.equals(a2))println(a1.toString)}
偏函数
/*
* 偏函数PartialFunction[A,B] 一进一出
* */
object Test_PartialFunction {def testPartialFunction:PartialFunction[String,Int]={case "a"=>1case "b"=>10case _=>1000000}def main(args: Array[String]): Unit = {println(testPartialFunction("aa"))}
}
【Scala】9、Trait、Match、CaseClass和偏函数相关推荐
- Scala特质trait
Scala特质 章节目标 能够使用trait独立完成适配器, 模板方法, 职责链设计模式 能够独立叙述trait的构造机制 能够了解trait继承class的写法 能够独立完成程序员案例 1. 特质入 ...
- Scala:try match
Scala:try & match try表达式 match 表达式 try表达式 try表达式的语意与java中try-catch-finally是一样的. 但是try在scala中不是一个 ...
- scala中的match详解
Scala中提供了比java,c更加强大的switch语句--match,而且不用担心因为忘记写break语句而发生case穿透 1.更好的switch 与if,类似match也是表达式,如下一个用于 ...
- Scala特质trait具备Java中类和接口的功能
特质trait具备Java中类和接口的功能
- Scala中的match(模式匹配)
2019独角兽企业重金招聘Python工程师标准>>> /** 模式匹配 */ case class Class1(param1: String, param2: String) c ...
- scala中的match
match的细节和注意事项: 1)如果所有case都不匹配,那么会执行case_分支,类似于Java中的default语句 2)如果所有case都不匹配,又没有写case_分支,那么会抛出MatchE ...
- 【Scala】Scala的偏函数和偏应用函数
偏函数(Partial Function),是一个数学概念它不是"函数"的一种, 它跟函数是平行的概念. Scala中的Partia Function是一个Trait,其的类型为P ...
- Spark基础-scala学习(三、Trait)
面向对象编程之Trait trait基础知识 将trait作为接口使用 在trait中定义具体方法 在trait中定义具体字段 在trait中定义抽象字段 trait高级知识 为实例对象混入trait ...
- Scala的特质(Trait)介绍
Scala的特质(Trait) 基本概念 特质声明 基本语法 特质的使用 基本语法 说明 案例实操 特质叠加 基本概念 案例实操 特质叠加执行顺序 案例说明 特质自身类型 说明 案例实操 特质和抽象类 ...
最新文章
- maven发布项目到私服-snapshot快照库和release发布库的区别和作用及maven常用命令
- Ubuntu12.10编译openwrt遇到的错误
- ‘Series‘ object has no attribute ‘sort‘
- Learning to Rank 中Listwise关于ListNet算法讲解及实现
- Python注释缩进不得当导致IndentationError: unexpected indent
- 息系统项目管理师知识点:区块链
- asp.net 开发知识小结【转】
- 高中会考access数据库_Access操作会考复习.doc
- 古谚、评论与论断、名篇与名言
- 视觉三维重建中的关键技术及代码实现视频分享
- compiled python file_YouCompleteMe安装的问题requires Vim compiled with Python (2.6+ or 3.3+) support...
- 2005。1。22,闹洞房安排。
- burpsuite配置证书抓取htpps
- FPGA-超声波避障小车(ego1)
- android 相机 app,android – Emulator的相机内置app buggy在Froyo / 2.2?
- 公司项目QuickSDK登陆以及支付总结
- 静态页面复习--用semantic UI仿写豆瓣主页
- 浪潮服务器性能参数,浪潮高密度服务器i24
- MacOS安装Homebrew与Oh-My-Zsh
- iOS 有效编写高质量Objective-C方法(一)
热门文章
- 自然语言处理(1)——绪论与概述
- Mybaits-Plus Invalid bound statement (not found) 问题
- 电信物联网平台SOTA升级(软件升级)的全流程说明
- 甘恒通:腾讯信鸽海量移动推送服务构建
- 金蝶K3 WISE BOM多级展开_BOM成本表
- 双系统不显示系统选择界面
- linux git rabit,Linux 安装 RabbitMQ
- 运行java程序需要的工具软件的目录,运行Java程序需要的工具软件所在的目录是A.JDK的bin目录B.JDK的demo目录C.JDK的lib目录D.JDKR的j...
- 电视盒子最新android,安卓盒子已倒下!4款Win10电视盒子推荐
- 项目管理知识点-结合Enovia项目管理模块