scala模式匹配
2024-08-24 05:51:41
package com.ming.test /**
* 模式匹配
*/
object MatchTest { def main(args: Array[String]): Unit = {
//match 基本用法
var sign=3
var m='w'
var str='d'
var digit="dsafdsafdsaf"
m match{
case '+' => sign=10
case '-' => sign=100
case _ => sign=200
}
println(sign)
sign=m match{case '+' => 1000;case '-' => 10000;case _ => 1231}
println(sign) //带有守卫的匹配
sign=m match{case '+' => 12;case '-' =>23;case _ if Character.isDigit(m) =>2;case _ => 1000000}
println(sign)
//类型模式
//var a=obj match{case x:Int=>x;case s : String => Integer.parseInt(s);case _:BigInt=>Int.MaxValue;case _ => 0} //数组匹配
var array=Array(0,2)
val s=array match{
case Array(0)=>"0"
case Array(x,y)=>x+" "+ y
case Array(0,_*)=>"0 ......"
case _ =>"something else"
}
println(s) //匹配列表
val list=List(0,212,3)
var lst=list match{
case 0 :: Nil =>"0"
case x :: y ::Nil => x+" "+ y
case 0 :: tail => "0...."
case _ =>"something else"
}
println(lst) //元祖匹配
val yuanzu=(1,2,0)
var zu=yuanzu match{
case (0,_,1) => "0 ..."
case (y,0,0) => y+"0"
case _ => "neither is 0"
}
println(zu) //变量中声明中的模式
val (x,y)=(1,2);
println(x+y) //for 表达式中的模式
for((k,v)<-Map((1,""),(2,3)) if v !="")println(k+"->"+v) } }
最新文章
- windows系统如何添加ssh key到github
- ASP.NET Aries 开源开发框架:开发指南(一)
- [R语言]R语言使用多线程对数据库进行大批量访问时出现无法连接问题
- 关于安装Visual Studio 2015 RC版卡主不动的解决方案
- ios 在程序中使用iCloud
- 大数运算Swift
- DevExpress 使用 XtraTabbedMdiManager 控件以 Tab样式加载 Mdi窗体并合并 RibbonControl 解决方案
- VIM下CS命令
- 今天开始自学Andrew Ng的机器学习,希望可以坚持下来
- 汉企C#面向对象——继承Practice
- 基于Struts2 的日志管理系统的Java实现
- (转)iOS Wow体验 - 第二章 - iOS用户体验解析(1)
- Android中的一些基础知识(二)
- Mapper XML Files详解
- 升级版本后报这个异常 : org.springframework.beans.factory.NoUniqueBeanDefinitionException
- 纯css实现横向下拉菜单
- THE MATRIX PROBLEM
- 用eNSP模拟
- Reactor和Proactor模式
- STSdb数据库的实现使用类