scala模式匹配,隐式转换

模式匹配:

 

一个模式匹配包含了一系列备选项,每个都开始于关键字 case

   def main(args: Array[String]) {

       print(1);

   }

   //模式匹配

   def fun(x:Int):String = x match{

     case 1 => "one"

     case 2 => "two"

     case _ => "many"

   }

 

Any代表任何类型:

   def main(args: Array[String]) {

       print(fun("two"));

   }

    

   //模式匹配

   def fun(x:Any):Any = x match{

     case 1 => "one"

     case "two" => 2

     case _ => "many"

   }

 

If判断

     //模式匹配

     def bigData(data1:String): Unit = data1 match {

         case "Spark" => println("this is Spark")

         case _ if data1 == "Scala" => println("this is Scala")

也可写出:case  data if data == "Scala" => println("this is Scala")

定义个变量data,将data1 绑定到data

         case _ => println("Others")

    }

 

 

类型匹配:

object Test{

  def main(args: Array[String]) {

      val stu = new Student

      matchType(stu)  // Student:xiaoming

  }

  //类匹配

  def matchType(p:Person): Unit ={

       p match {

        case  stu:Student => println("Student:"+stu.name)

        case  worker:Worker => println("Worker:"+worker)

        case _ => println("Others")

      }

  }

}

 

class Person

 

class Student extends Person{

  val name = "xiaoming"

}

class Worker extends Person{

  val name = "xiaowang"

}

 

 

object Test{

  def main(args: Array[String]) {

    val alice = new Person("Alice",23)

    val bob = new Person("Bob",22)

    for(p<-List(alice,bob)) {

        p match {

        case Person("Alice",23) => println("Alice is 23 years old");

        case Person("Bob",22) => println("Bob is 22 years old");

        }

    }

  }

}

case class Person(name:String,age:Int)

 

隐式转换:

object Test{

  implicit val name:String = "scala"

  def main(args: Array[String]) {

      hiScala("aa")

      hiScala

  }

  def hiScala(implicit str:String){

      println("str:"+str)  

  }

}

//str:aa  str:scala 什么都不传就传 隐式的scala

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值