Scala的循环守卫几个骚操作

scala也有类似于java的switch的循环守卫,但更为强大,且好用,下面介绍一下几种用法

    var oper = '+'
    var num1=10
    var num2 = 100
    var sum=0
    oper match{
      case '+'=> sum = num1+num2 ;
        
      //需要添加一下,否则如果没匹配到会报Matcherror
      case _=> println("error")

    }

    println("值为"+sum)

在这里插入图片描述

//循环守卫
for(ch<-"+-/*3"){
      ch match {
        case '+'=> {sum+=num1
          println("加法"+sum)
        }
        case '-'=> {sum-=num1
          println("减法"+sum)
        }
        case '/'=> {sum=sum/num1
          println("除法"+sum)
        }
        case '*'=> {sum+=num1
          println("乘法"+sum)}
        case mychar =>{
          println(mychar)
        }
        case _=>{
          println("无法匹配"+ch)

          }
        }
      }

在这里插入图片描述

//匹配返回值
 var gh =gl match {
      case mychar=> 12+mychar
    }

在这里插入图片描述

  //匹配数据类型 有点鸡肋 case若含有其他数据类型会报错
    gh match {

      case a: Int=>println("为整形")
    
      case _=> println("无匹配")

    }

在这里插入图片描述

//匹配array类型
  val arrs2 = Array(Array(0), Array(1, 0), Array(0, 1, 0),Array(0,10),
      Array(12,3,4), Array(1, 1, 0, 1))

    for (arr <- arrs2 ) {
      val result = arr match {
        case Array(0) => "值为0"
        case Array(x, y) =>   ArrayBuffer(y,x) //Array(y,x).toBuffer //? ArrayB(y,x)
        case Array(0, x) => ArrayBuffer( x, 0)
        case Array(x,y,z)=> ArrayBuffer(y,z,x)
        case _ => "不处理~~"
      }

      println("res=" + result) //ArrayBuffer(0,1)
    }

在这里插入图片描述

//匹配list数据类型
  for (list <- Array(List(0), List(1, 69), List(88), List(0, 0, 0), List(1, 22,33))) {
      val result = list match {
        case 0 :: Nil => "0" //
        case x :: y :: Nil => x  + y //
        case 0 :: tail => "0 ..." //
        case x :: Nil => x
        case x::y::z::Nil => x+y+z
        case _ => "something else"
      }

      println(result)
    }

在这里插入图片描述

//匹配元组
 val arrs2 = Array(Array(0), Array(1, 0), Array(0, 1, 0),Array(0,10),
      Array(12,3,4), Array(1, 1, 0, 1))

    for (arr <- arrs2 ) {
      val result = arr match {
        case Array(0) => "值为0"
        case Array(x, y) =>   ArrayBuffer(y,x) //Array(y,x).toBuffer //? ArrayB(y,x)
        case Array(0, x) => ArrayBuffer( x, 0)
        case Array(x,y,z)=> ArrayBuffer(y,z,x)
        case _ => "不处理~~"
      }

      println("res=" + result) //ArrayBuffer(0,1)
    }

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、Scala核心编程课程简介近年来随着大数据的兴起,大数据核心框架Spark和Kafka也受到到广泛关注, Spark底层是Scala实现的, 因此也带火了Scala语言,目前Scala被全球知名公司(如:谷歌、百度、阿里、Twitter、京东等)广泛用于Spark开发。新一代的物联网时代到来,会对大数据应用人才的需求越加紧迫。 尚硅谷网罗和整合了学员很喜爱的师资,打造出专注于Spark开发的Scala课程,我们讲解Scala核心编程技术,同时也讲解编程思想、设计模式和Scala底层实现,让您有豁然开朗的感受。二、课程内容和目标本课程重点讲解Scala核心编程,内容包括: Scala语言概述、运算符、程序流程控制、数据结构之集合、Map映射、过滤、化简、折叠、扫描、拉链、视图、并行集合、高阶函数、函数柯里化、偏函数、参数推断、控制抽象、Trait、面向对象编程、异常处理、惰性函数、Akka及Actor模型、Spark Master和Worker通讯、隐式转换、隐式参数、工厂模式、单例模式、观察者模式、装饰者模式、代理模式、泛型、上下界、视图界定、上下文界定、协变逆变不变和源码剖析。通过系统全面的学习,学员能掌握Scala编程思想和Scala底层机制,为进一步学习Spark打下坚实基础。三、谁适合学1.希望以较低的投入和风险,来了解自己是否适合转型从事Spark开发的求职人员。2.有一定的Java基础,或者自学过一些Java书籍与视频资料,想系统掌握Scala语言的程序员。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值