scala基础与实践(下)

本文深入介绍了Scala中的case class用法,包括其模式匹配能力,无需new即可创建对象的特性。此外,还探讨了集合操作如foreach、map、filter、zip、partition和flatten等,并展示了隐式转换的概念,包括如何定义隐式函数、隐式参数和隐式类。通过实例展示了隐式转换的应用。

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

case class(多用在模式匹配中)

   构造器中的每一个类型都为val,不建议用var

   不用new就可以直接产生对象(为什么?apply方法)

case class Book(name:String, author:String)
object Basic5 {
  def main(args:Array[String]): Unit ={
    val macTalk = Book("MacTalk", "CJQ")
    macTalk match{
      case Book(name, author) => println("this is book")
      case _ => println("unknown")
    }
  }
 
}

输出结果:

集合操作

集合:List,Set,Tuple,Map

foreach, map,filter, zip, partition(列表分割), flatten(扁平化), flatmap(map + flatten),sorted

foreach:

map:

filter:

zip:

partition:

flatten:

flatMap:先做map,然后flatten

sorted:

隐式转换

    位于源目标类型的伴生对象中的隐式函数

    位于当前作用域可以以单个标识符指代的隐式函数

object Basic6 {

  def main(args:Array[String]): Unit ={
    implicit def a2RichA(a:A) = new RichA(a)
    val a = new A
    a.rich
  }
}
class A{

}
class RichA(a:A){
  def rich: Unit ={
    println("rich...")
  }
}

输出结果:

    隐式参数

object Basic6 {

  def main(args:Array[String]): Unit ={
    implicit  val name = "implicit!!!"
    testParam
    testParam("xxx")
  }

  def testParam(implicit name :String): Unit ={
    println(name)
  }
}

输出结果:

   隐式类

object Basic6 {
  implicit class Calculator(x:Int){
    def add(a:Int):Int = a + 1
  }
  println(1.add(1))
}

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值