scala基础与实践(下)

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))
}

输出结果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值