Scala--样例类(case)详解】的更多相关文章

概述: case类在模式匹配和actor中经常使用到,当一个类被定义成为case类后,Scala会自动帮你创建一个伴生对象并帮你实现了一系列方法且带来了不少好处,如下: 1.实现了apply方法,意味着你不需要使用new关键字就能创建该类对象 scala> case class People(name:String,age:Int) defined class People scala> val p = People("mobin",22) //省略了new关键字 p: P…
运行效果: 前台代码: <Window x :Class="Waiting.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x ="http://schemas.microsoft.com/winfx/2006/xaml" Title="后台忙" Height="94.635" Width…
单例类 描述 指在整个系统生命期中,一个类最多只能有一个实例(instance)存在,使得该实例的唯一性(实例是指一个对象指针)  , 比如:统计在线人数 在单例类里,又分为了懒汉式和饿汉式,它们的区别在于创建实例的时间不同: 懒汉式 : 指代码运行后,实例并不存在,只有当需要时,才去创建实例(适用于单线程) 饿汉式 : 指代码一运行,实例已经存在,当时需要时,直接去调用即可(适用于多线程) 用法 将构造函数的访问属性设置为private, 提供一个GetInstance()静态成员函数,只能供…
一.case class 的特征 package com.jason.qianfeng case class Message(sender: String, receiver: String, body: String) object CaseClassTest { def main(args: Array[String]): Unit = { println("==case class 的比较") val mes = Message("jason", "…
一.前述 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大. 模式匹配机制相当于java中的switch-case. 使用了case关键字的类定义就是样例类(case classes),样例类是种特殊的类. Actor相当于Java中的多线程. 二.具体阐述 trait特性 1.概念理解 Scala Trait(特征) 相当于 Java 的接口,实际上它比接口还功能强大. 与接口不同的是,它还可以定义属性和方法的实现. 一般情况下Scala的类可以继承多个Tra…
模式匹配 package com.zy.scala import scala.util.Random /** * 模式匹配 */ object CaseDemo { def main(args: Array[String]): Unit = { //匹配字符串 val arr1 = Array(" hadoop", " zookeeper", " spark ") val name = arr1(Random.nextInt(arr1.lengt…
3. 类.对象.继承和trait 3.1 类 3.1.1 类的定义 Scala中,可以在类中定义类.以在函数中定义函数.可以在类中定义object:可以在函数中定义类,类成员的缺省访问级别是:public //在Scala中,类不用声明为public //Scala源文件中可以包含多个类,所有这些类都具有公有可见性 class Person { //val修饰的变量是只读属性,相当于Java中final修饰的变量,只提供get() val id = "1" //var修饰的变量,提供g…
Scala有一个十分强大的模式匹配机制,可以应用到很多场合:如switch语句.类型检查等.并且Scala还提供了样例类,对模式匹配进行了优化,可以快速进行匹配. 1.字符匹配     def main(args: Array[String]): Unit = {       val charStr = '6'       charStr match {         case '+' => println("匹配上了加号")         case '-' => pr…
一.本章要点 match表达式是更好的switch,不会有意外调入下一个分支 如果没有模式能够匹配,会抛出MatchError,可以用case _模式避免 模式可以包含一个随意定义的条件,称做守卫 你可以对表达式的类型进行匹配;优先选择模式匹配而不是isInstanceOf/asInstanceOf 你可以匹配数组,元祖,样例类的模式,然后匹配到不同部分绑定到变量 在for表达式中,不能呢匹配的情况会被安静的跳过 样例类是编译器会为之自动 二.更好的switch var sign=... val…
package com.yz8 import org.junit.Test class test { @Test def test: Unit = { val ints = List(1,5,7,6,8) println(ints.head)//1 println(ints.tail)//List(5, 7, 6, 8) //判断集合是否为空 println(ints.isEmpty) println(ints==Nil) } @Test def test2(): Unit ={ val int…