scala快速上手(七) Scala 模式匹配+偏函数

Scala 模式匹配+偏函数

模式匹配

1. 概念理解:

Scala 提供了强大的模式匹配机制,应用也非常广泛。

一个模式匹配包含了一系列备选项,每个都开始于关键字 case。

每个备选项都包含了一个模式及一到多个表达式。箭头符号 => 隔开了模式和表达式。

2. 代码及注意点

  •  模式匹配不仅可以匹配值还可以匹配类型
  •  从上到下顺序匹配,如果匹配到则不再往下匹配
  •  都匹配不上时,会匹配到 case _ ,相当于 default
  •  match 的最外面的”{ }”可以去掉看成一个语句
object Lesson_Match {
	def main(args: Array[String]): Unit = {
		val tuple = Tuple6(1,2,3f,4,"abc",55d)
		val tupleIterator = tuple.productIterator
		while(tupleIterator.hasNext){
			matchTest(tupleIterator.next())
		}

	}
	/**
	* 注意点:
	* 1.模式匹配不仅可以匹配值,还可以匹配类型
	* 2.模式匹配中,如果匹配到对应的类型或值,就不再继续往下匹配
	* 3.模式匹配中,都匹配不上时,会匹配到 case _ ,相当于 default
	*/
	def matchTest(x:Any) ={
		x match {
			case x:Int=> println("type is Int")
			case 1 => println("result is 1")
			case 2 => println("result is 2")
			case 3=> println("result is 3")
			case 4 => println("result is 4")
			case x:String => println("type is String")
			// case x :Double => println("type is Double")
			case _ => println("no match")
		}
	}
}

偏函数

如果一个方法中没有 match 只有 case,这个函数可以定义成 PartialFunction 偏函数。偏函数定义时,不能使用括号传参,默认定义 PartialFunction 中传入一个值,匹配上了对应的 case,返回一个值,只能匹配同种类型。

/**
* 一个函数中只有 case 没有 match ,可以定义成 PartailFunction 偏函数
*/
object Lesson_PartialFunction {
	def MyTest : PartialFunction[String,String] = {
		case "scala" =>{"scala"}
		case "hello"=>{"hello"}
		case _=> {"no match ..."}
	}
	def main(args: Array[String]): Unit = {
		println(MyTest("scala"))
	}
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

plenilune-望月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值