Scala基础—提取器Extractor使用示例
来源:互联网 发布:公务员 网络课程 攻略 编辑:程序博客网 时间:2024/05/16 06:03
package com.spark.scala.basics/** * 1. */case class Person1(name: String, age: Int)class Coder(val name:String, val salary: Int)object Coder { def apply(name:String, salary: Int): Unit = { println("Coder apply method invoked!!") new Coder(name, salary) } def unapply(information: String) = { //提取,用Some封装成Tuple Some((information.substring(0, information.indexOf(" ")), information.substring(information.indexOf(" ") + 1))) }}object ExtractorDemo { def main(args: Array[String]): Unit = { val person = Person1("Spark", 6) //调用apply工厂构造方法,构造出类的实例对象 val Person1(name, age) = person // 对象直接赋值给类,调用unapply()把person实例中的name和age提取出来并赋值给Person1的成员 println(name + " : " + age) //Spark : 6 person match { case Person1(name, age) => println("name is " + name + " and age is " + age + ".") } val Coder(codername, salary) = "Spark 1000,000" }}
package com.expgiga.ScalaTest/** * 在实例化一个类的时候,可以带上0个或者多个参数,编译器在实例化的时候会调用apply方法。可以在类和对象中都定义apply方法。 * unapply方法提取指定查找的值,它与apply的操作相反。当在提取器对象中使用match语句时,unapply将自动执行 */object ApplyTest { def main(args: Array[String]): Unit = { val x = ApplyTest(5) println(x) x match { case ApplyTest(num) => println(x + " 是 " + num + " 的两倍!") case _ => println("无法计算!") } } def apply(x: Int) = { println("调用apply方法!") x * 2 } def unapply(z: Int): Option[Int] = { println("调用unapply方法!") if(z % 5 == 0) Some(z / 5) else None }}
阅读全文
0 0
- Scala基础—提取器Extractor使用示例
- scala基础之提取器extractor
- Scala 提取器(Extractor)
- Scala 提取器(Extractor)
- Scala:提取器(Extractor)
- Scala 提取器(Extractor)
- scala的提取器(Extractor)
- 第28讲:Scala提取器Extractor
- Scala-28:提取器Extractor实战详解
- 28.Scala提取器Extractor实战详解
- scala提取器、注解使用示例
- Scala入门到精通——第二十五节 提取器(Extractor)
- Scala入门到精通——第二十五节 提取器(Extractor)
- Scala深入浅出实战经典:28,Scala提取器Extractor实战详解
- Scala基础—Trait使用示例
- Scala基础—异常、Lazy使用示例
- 使用Scala提取器
- Spark基础-Scala提取器
- 软件工程(C编码实践篇) 学习总结
- python学习笔记之字符编码
- 【React Native】React Native之Navigator has been remove from this package...的问题
- webvtt字幕转srt字幕方法
- 【JavaSE笔记】Java常见细节性问题(二)
- Scala基础—提取器Extractor使用示例
- 洛谷1046 陶陶摘苹果
- 最新去除标题栏的方法
- RunLoop总结:RunLoop基础知识
- ffmpeg从MP4中提取h264的NALU
- nginx 配置
- 三层结构--初识
- 谈一谈Java8的函数式编程 (一)(转)
- 插入排序算法