第13课Scala模式匹配实战

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">object helloPatternMatch { </span>
<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">def main(args: Array[String]): Unit = { </span>

    getSalary("Spark") 

    getSalary("Hadoop")

    getSalary("Scala") 

 
<span style="font-family: Arial, Helvetica, sans-serif;">    getSalary("test",6) //第二个参数作判断条件</span>
}

def getSalary(name: String) {
    name match {
      case "Spark"                         => println("$150000/year")
      case "Hadoop"                        => println("$100000/year")
      case _ if name == "Scala"            => println("$140000/year")
      case _ if name == "Hadoop Mapreduce" => println("$90000/year")
      case _                               => println("$80000/year")
    }
  }
def getSalary(name: String, age: Int) {
    name match {
      case "Spark"                         => println("$150000/year")
      case "Hadoop"                        => println("$100000/year")
      case _ if name == "Scala"            => println("$140000/year")
      case _ if name == "Hadoop Mapreduce" => println("$90000/year")
      case _name <span style="color:#ff6666;">if age >= 5 </span>              => println("$95000/year")
      case _                               => println("$80000/year")
    }
  }

Result:

$150000/year

$100000/year

$140000/year

$95000/year

main方法中调用:  
    getMatchType(100)
    getMatchType(100.0)
    getMatchType(Array(13,15))
    getMatchType(Array("Spark","Scala"))

def getMatchType(msg: Any) {
    msg match {
      case i: Int            => println("Integer")
      case s: String         => println("String")
      case d: Double         => println("Double")
      case array: Array[Int] => println("Array")
      case _                 => println("Unknown Type")
    }
  }
Result:

Integer

Double
Array
Unknown Type


main方法中调用

  getMatchCollection(Array("Scala","Python")); //不在前三个结果范围内, 第4个case
  getMatchCollection(Array("Scala","Java"));   //第二个case
  getMatchCollection(Array("Spark","Java","hahaha"));//第一个是Spark值,3个值,符合第3个case

  def getMatchCollection(msg: Any) {
    msg match {
      case Array("Scala")         => println("One element")
      case Array("Scala", "Java") => println("Twp elements")
      case Array("Spark", _*)     => println("Many elements")
      case _                      => println("Unknown Type")
    }
  }


 Result: 

Unknown Type 

Twp elements 

Many elements

定义class及case class

class DataFrameWork
case class ComputationFramework(name: String, popular: Boolean) extends DataFrameWork
case class StorageFramework(name: String, popular: Boolean) extends DataFrameWork
main方法中调用:
    getBigDataType(ComputationFramework("Spark", true))
    getBigDataType(ComputationFramework("Spark", false))
    getBigDataType(StorageFramework("HDFS", false))

  def getBigDataType(data: DataFrameWork) {
    data match {
      case ComputationFramework(name, popular) =>
        println("ComputationFramework : " + "name : " + name + ", popular:" + popular)
      case StorageFramework(name, popular) =>
        println("StorageFramework : " + "name : " + name + ", popular:" + popular)
      case _ => println("Some other type")
    }
  }
Result:

ComputationFramework : name : Spark, popular:true
ComputationFramework : name : Spark, popular:false
StorageFramework : name : HDFS, popular:false

main方法中调用:
    getValue("Spark", Map("Spark" -> "The hottest!", "Hadoop" -> "Other"))
    getValue("Hadoop", Map("Spark" -> "The hottest!", "Hadoop" -> "Other"))
    getValue("Scala", Map("Spark" -> "The hottest!", "Hadoop" -> "Other"))

  def getValue(key: String, context: Map[String, String]) {
    context.get(key) match {
      case Some(value) => println(value)
      case None        => println("Not Found")
    }
  }
Result:

The hottest!
Other
Not Found




1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计题、程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下 4载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计题、程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计题、程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合;、下载 4使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值