提取器 unapply 与 unapplySeq
来源:互联网 发布:阿里 腾讯 视频云服务 编辑:程序博客网 时间:2024/05/29 06:58
package com.hans.scala
/**
* 提取器
* Created by Hans on 2014/4/13.
*/
class Name(val f: String, val l: String)
object Name2 {
def unapplySeq(input: String): Option[Seq[String]] =
if (input == "") None else Some(input.trim.split("\\s+"))
}
object Name {
def apply(input: String) = {
val pos = input.split(" ")
new Name(pos(0), pos(1))
}
def unapply(n: Name): Option[(String, String)] = Some((n.f, n.l))
def unapply(input: String): Option[(String, String)] = {
val pos = input.split(" ")
Some((pos(0), pos(1)))
}
def unapplySeq(input: String): Option[Seq[String]] =
if (input == "") None else Some(input.trim.split("\\s+"))
def main(args: Array[String]) {
val Name(first, last) = Name("li xiaoyao")
println(first + "," + last)
val Name(first1, last1) = "li xiaoyao"
println(first1 + "," + last1)
"li xiaoyao" match {
case Name(a1, a2) => println(a1 + "," + a2)
case Name2(a1, a2, a3) => println(a1 + "," + a2 + "," + a3)
}
matcher("li xiao yao")
matcher("li xiao yao hans")
val Name2(t1, t2, t3) = "li xiao yao"
println(t1 + "," + t2 + "," + t3)
}
def matcher(name: String) {
name match {
case Name2(a1, a2) => println(a1 + "," + a2)
case Name2(a1, a2, a3) => println(a1 + "," + a2 + "," + a3)
case Name2(a1, a2, a3, a4) => println(a1 + "," + a2 + "," + a3 + "," + a4)
}
}
}
/**
* 提取器
* Created by Hans on 2014/4/13.
*/
class Name(val f: String, val l: String)
object Name2 {
def unapplySeq(input: String): Option[Seq[String]] =
if (input == "") None else Some(input.trim.split("\\s+"))
}
object Name {
def apply(input: String) = {
val pos = input.split(" ")
new Name(pos(0), pos(1))
}
def unapply(n: Name): Option[(String, String)] = Some((n.f, n.l))
def unapply(input: String): Option[(String, String)] = {
val pos = input.split(" ")
Some((pos(0), pos(1)))
}
def unapplySeq(input: String): Option[Seq[String]] =
if (input == "") None else Some(input.trim.split("\\s+"))
def main(args: Array[String]) {
val Name(first, last) = Name("li xiaoyao")
println(first + "," + last)
val Name(first1, last1) = "li xiaoyao"
println(first1 + "," + last1)
"li xiaoyao" match {
case Name(a1, a2) => println(a1 + "," + a2)
case Name2(a1, a2, a3) => println(a1 + "," + a2 + "," + a3)
}
matcher("li xiao yao")
matcher("li xiao yao hans")
val Name2(t1, t2, t3) = "li xiao yao"
println(t1 + "," + t2 + "," + t3)
}
def matcher(name: String) {
name match {
case Name2(a1, a2) => println(a1 + "," + a2)
case Name2(a1, a2, a3) => println(a1 + "," + a2 + "," + a3)
case Name2(a1, a2, a3, a4) => println(a1 + "," + a2 + "," + a3 + "," + a4)
}
}
}
0 0
- 提取器 unapply 与 unapplySeq
- Desugar Scala(15) -- unapply和unapplySeq方法
- scala学习笔记:match与unapply()
- scala中的apply方法与unapply方法
- scala 知识总结 apply与unapply
- scala unapply的测试
- scala中的apply和unapply
- apply方法和unapply方法
- 特征提取与匹配
- 特征提取与转换
- SURF提取与匹配
- 特征选择与提取
- 边界提取与跟踪
- 提取水平与垂直线
- 水平线与垂直线提取
- 波形包络提取与峰值提取
- scala 随笔(7)unapply 解析
- scala 的apply,update,unapply方法
- Java中Error与Exception的区别
- Android 百度地图频繁添加覆盖物后刷新出现地图闪烁问题(个人)
- 【开源推荐】AllJoyn:打造全球物联网的通用开源框架
- tcpdump命令详解
- hadoop2.2+mahout0.9实战
- 提取器 unapply 与 unapplySeq
- opencv中Hought线变换
- JNI攻略―操作对象的构造方法
- Project Euler 16~20
- ProcessEngine cannot be resolved to a type
- WebView 笔记
- 事务并发控制和锁机制
- 2014-4-16-表格边框
- Oracle11g监听程序当前无法识别连接描述符中请求的服务