手机版

第4课:Scala模式匹配、类型系统彻底精通与Spar(3)

发布时间:2021-06-07   来源:未知    
字号:

Scala模式匹配Scala类型系统Spark源码阅读

2)自定义提取器;下面的例子显示电子邮件地址的提取器对象:

object Test {

def main(args: Array[String]) {

println ("Apply method : " + apply("Zara", ""));

println ("Unapply method : " + unapply("Zara@"));

println ("Unapply method : " + unapply("Zara Ali"));

}

// The injection method (optional)

def apply(user: String, domain: String) = {

user +"@"+ domain

}

// The extraction method (mandatory)

def unapply(str: String): Option[(String, String)] = {

val parts = str split "@"

if (parts.length == 2){

Some(parts(0), parts(1))

}else{

None

}

}

}

六:变量声明中的模式

val (x, y) = (1, 2)

val (q, r) = BigInt(10) /% 3 // 返回商和余数的对偶

val Array(first, second, _*) = arr // 将第一和第二个分别给first和second

七:for表达式中的模式

import scala.collection.JavaConversions.propertiesAsScalaMap

for ((k, v) <- System.getProperties()) // 这里使用了模式

println(k + " -> " + v)

for ((k, "") <- System.getProperties()) // 失败的匹配会被忽略,所以只打印出值为空的键

println(k)

八:样例类

abstract class Amount

// 继承了普通类的两个样例类

case class Dollar(value: Double) extends Amount

case class Currency(value: Double, unit: String) extends Amount

// 样例对象

case object Nothing extends Amount

amt match {

case Dollar(v) => "$" + v

第4课:Scala模式匹配、类型系统彻底精通与Spar(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
×
二维码
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)