模式匹配基本语法与在集合中的使用

本文介绍了Scala中的模式匹配基本语法及其在集合中的应用。通过多个示例演示了如何使用模式匹配来解析不同类型的输入数据,包括整数、字符串、列表及元组等。此外还展示了正则表达式的使用方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

场景
模式匹配基本语法与在集合中的使用
实验
package com.scode.scala

/**
 * author: Ivy Peng
 * function: 1、学习模式匹配 基本语法与在集合中的使用
 * 					 2、了解提取器Extractor工作机制(待进一步理解)
 * date:2016/03/20 11.47
 * sum:
 * 模式匹配语法:varName match 
 * {
 *  case matchContent => ops
 *   ...
 *  case
 * }
 * 1、可以把匹配的内容赋值给 matchContent,然后在 ops中对其进行操作
 * 2、case分支不需要以 break结尾
 */
object MatchOps
{
  def main(args:Array[String])=
  {
    matchBase
    
    match_typeList(List(1,2))
    match_tuple((0,3))
    
    val pattern = "([0-9]+) ([a-z]+)".r
    "2016032 nice" match
    {
      case pattern(num,item)=> println(num+":"+item)
    }
  }
  
  def matchBase()
  {
    val data = 2
    data match 
    {
      case 1=> println("First")
      case 2=> println("Second")
      case _ => println("Unknow input")
    }
    
    //把匹配的内容,传递给 val i,在 => 后面可以使用 i
    val result = data match
    {
      case i if i==1 => "First"
      case num if num==2 => "Second"
      case _=> println("Unknow input")
    }
    println(result)
    
    "Spark".foreach
    {
      x => print(
                    x match
                    {
                      case ' ' => "space"
                      case ch => ch
                    }
                  )
    }
  }
  
  def match_type(typ:Any)=typ match
  {
    case p:Int => println("Integer")
    case str:String => println("String")
    case m:Map[_,_] => m.foreach(println)
    
    case Array(0) => println("Array"+"0")
    case Array(x,y) => println("Array"+x+y)
    case Array(0,_*)=> println("Array"+"...")
    case _=> println("something else")
  }
  
  def match_typeList(t:Any)= t match
  {
    case 0::Nil => println("List:"+"0")
    case x::y::Nil=> println("List:"+x+y)
    case 0::tail=> println("List:"+"0 ...")
    case _=> println("Something else")
  }
  
  def match_tuple(tuple:Any)= tuple match
  {
    case (0,_)=> println("tuple:"+ "0")
    case (_,2)=> println(". 2")
  }
}
参考文献
scala 深入浅出实战经典 . 王家林模式
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值