scala学习(三)

高阶函数
Scala作为一门“函数式编程语言”,函数是一个值,能被传递和操作
  头等函数
    函数是一个值,在Scala中,函数能作为参数进行传递,函数能调用满足参数要求的不同的函数作为参数
匿名函数
    不命名的函数,匿名函数的作用域非常小,往往只在参数中使用,其作用范围即是调用该匿名函数参数的函数体
柯里化
    柯里化是指将接受两个参数的函数变成新的接受一个参数的函数的过程
控制抽象

模式匹配
match表达式的高级应用,样例类
    模式匹配
        数据结构包括各种集合,类,函数等
      通配符“_”表示任意,“_*”则表示任意长度,
​        类型匹配​
        泛型的类型匹配要注意如List[String]、Map[Char,Int]等不会成功匹配,如List[Int]等亦可匹配,因而往往使用通配符List[ _ ]进行匹配,但Array[Int]是可行的​
  样例类
        
  封闭类
        模式匹配完成后需要确保所有情况皆被考虑
      Scala编译器会检测match表达式所遗漏的模式组合
      使样本类的超类被封闭(sealed),封闭类除类定义文件外不能添加子类
​        warning : match is not exhaustive  添加注解​ (a: @unchecked)
  偏函数
        限定输入参数的值的函数
      把函数应用到其不支持的值时,产生运行异常
      PartialFunction[A,B],Scala包中给出的部分函数类型
​        PartialFunction可以使用orElse组成新的函数​
​        把参数模式匹配​
类型参数
通过类型参数构建类和函数、方法,使之适应不同类型的参数

  泛型
        类、特质、函数、方法可带有类型参数
        当类型被指定的时候构成具体的类、函数等
        支持类型推断​
类型变量界限
        对于泛型结构,类型参数界限能限制应用在该泛型上的类型
        Ordered[T]:Scala标准库中提供的一个特质,用以表示可比较的类型
​        可以通过自行构建的类混入Ordered特质使之符合参数界限(能比较)
        类型参数上界实则通过限制类型必须拥有某些特质
​        视界限定
        类型参数下界
        上下文界定
      T : M //M[T]是在源码中定义的另一个泛型类
      多重界定
      T >: lower <:upper //同时有上下界,但不能同时有多个上界或下界
      T <: Ordered[T] with Cloneable//能要求同时混入多个特质
      T <% Ordered[T] <% String//能同时多个视图限定
      T : Ordering : Manifest//能同时多个上下文界定
      类型约束
      T =:= U  T和U类型一致
        T<:< U  T是U的子类 
        T <%< U T必须能够隐式转换为U
      使用类型约束需添加(implicit ev: T <:< U)

型变(协变与逆变)
          Stack[School]与Stack[Student]没有任何关系,是两个独立的类
        class Stack[+T] +号意味着Stack与T是协变的,Stack与T朝着同样的方向型变
        Stack[Student]extends Stack[School]
        class Stack[-T] -号意味着Stack与T是逆变的,Stack与T朝着相反的方向型变
        Stack[School]extends Stack[Student]
        注意:泛型的类型声明中可以同时使用协变和逆变
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值