第53讲:Scala中结构类型实战详解学习笔记

53讲:Scala中结构类型实战详解学习笔记

本讲讲结构类型

在其他语言中也有javasctiptruby

动态语言中有一种知名的鸭子类型:如果看起来像鸭子,走起来像鸭子叫起来也像鸭子的话,我们就认为是鸭子。

结构类型是指一组关于抽象的方法或字段或类型的规格的说明,

这种抽象的方法或字段或类型是我们传进参数或使用相关的对象必须具备的。

举例:

 

class Structural { def open()=print("A class instance Opened")}

 

object Structural_Type {

  def main(args: Array[String]){

    init( new { def open()=println("Opened")})    //匿名对象中有个open方法。

    type X = {def open():Unit}    //type是把等号后的命名为别名,要想使用open,可以直接使用X,X里有open

    //如果路径长或表达复杂类时可以用type的方式。

    //C语言的结构体也可以将结构体命名成别名。

    def init(res:X) = res.open    //这里的init是局部的本地方法

    init(new {def open()=println("Opened again")})

    

    object A {def open() {println("A single object Opened")}}

    init(A)

  

    val structural = new Structural

    init(structural)

  }

  def init(res: {def open()}Unit){

  //init方法要求传进的对象中有一个open方法,只要传进的对象中有open方法,就可以传进来。而不关心其类型。

  //这个特性类似动态语言的特性。

    res.open

  }

}

 

在构建复杂的表达式又不想从类或接口的角度去限制,就可以使用结构方法。

含有动态语言的灵活性和简洁性,在spark中很少使用,但从对语言的感知的角度非常有用。

scala中的结构类型=动态语言中的鸭子类型

以上内容是从王家林老师DT大数据课程第53讲的学习笔记。
DT大数据微信公众账号:DT_Spark  

王家林老师QQ:1740415547 

王家林老师微信号:18610086859
百度网盘共享的DT大数据梦工厂王家林老师第1-91讲的视频内容:http://pan.baidu.com/share/home?uk=4013289088#category/type=0&qq-pf-to=pcqq.group

53讲爱奇艺视频网址:http://www.iqiyi.com/w_19rrtik9eh.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值