美文网首页
2020-11-15-Scala-复习-7(匹配模式与类型参数)

2020-11-15-Scala-复习-7(匹配模式与类型参数)

作者: 冰菓_ | 来源:发表于2020-11-13 08:04 被阅读0次

1.一个例题关于用匹配模式统计字符串中的不同字母出现的位置并排序

//限制: 不能使用可变map 不能使用sortedlist集合
问题:使用不可变map无法使用map()

import scala.collection.mutable
import scala.collection.mutable.ListBuffer

object Test3 {
  def main(args: Array[String]): Unit = {
      //统计字母出现的位置
      var st :String = "AANNCCCRRUUSSRT"
    println(func1(st)(max))

  }
  //发现一个问题 不可变map不能使用map()原因是map()是调用添加方法的,如果不存在则是添加,存在则是更新
  def  func1(string: String)(f:String=>String)={
          val   map  =  mutable.Map[Char,ListBuffer[Int]]()
          var i =0
          f(string).foreach {
                 //foreach方法每次循环获取一个
                data=> map.get(data)  match {
                  case Some(value) => map(data) = value :+  i
                  case  None => map += (data -> ListBuffer{i} )
                }
                i+=1
          }
          map.toList.sortBy(_._1).reverse
  }
  def max (string: String)={
       string.toUpperCase
  }
}

2.unapplySeq方法(提取器)在模式匹配中的使用(对象的匹配)

//字符串的匹配

object Test4 {
  def main(args: Array[String]): Unit = {
       val st = "小白,小明,小华,小妞"
     var result = st match {
        case Name(a,_,_,d) => (a,d)
      }
      println(result)
  }
}
object Name{
  def unapplySeq(arg: String): Option[Array[String]] ={
          if(arg.length==0) None else  Some(arg.split(","))
  }
}

3.scala模式匹配中的语法及使用

1.用作类型的检查(数据类型的匹配)
2.匹配数据结构(元素的获取和占位符的使用 _ name @_*)
3.提取器(unapply 固定数量 unapplySeq )
4.样例类(编译器进行了自动的配置:构造器的每个参数默认val .....)

4.类型限定

相关文章

  • 2020-11-15-Scala-复习-7(匹配模式与类型参数)

    1.一个例题关于用匹配模式统计字符串中的不同字母出现的位置并排序 //限制: 不能使用可变map 不能使用so...

  • Scala中的模式匹配

    简单匹配 模式匹配常用于match语句: 变量使用 模式匹配case中可以使用变量来获取参数值 类型匹配 守卫匹配...

  • scala模式匹配

    基本类型模式匹配 数组匹配 List匹配 类型匹配 case匹配 Some | None匹配

  • 模式匹配

    模式匹配之字符串 模式匹配之匹配类型 模式匹配之匹配数组、元组、集合 模式匹配之样例类 模式匹配之偏函数

  • 模式匹配

    普通匹配 匹配常量;类型;模式守卫 匹配数组 匹配列表 方式二(方式一与匹配数组相同) 匹配元组 元组特殊匹配 1...

  • Haskell(二)

    模式匹配当调用函数lucky 7时会返回test 7,当调用luck参数不为7时会输出sorrylucky 7 =...

  • Python入门与进阶(10-10)

    10-10 匹配模式参数

  • Scala模式匹配

    模式匹配match 模式匹配不仅可以匹配值(case 1)还可以匹配类型(case s:String) 匹配过程有...

  • 模式匹配

    模式 模式类型 通配符模式 _ 匹配任何值 _? 匹配非nil值 标识符模式 值绑定模式 元组模式 枚举case模...

  • JAVA中重写和重载区别

    重写和重载区别 重写方法的规则如下: 参数列表:必须与被重写方法的参数列表完全匹配。 返回类型:必须与超类中被重写...

网友评论

      本文标题:2020-11-15-Scala-复习-7(匹配模式与类型参数)

      本文链接:https://www.haomeiwen.com/subject/chnebktx.html