第53讲:Scala中结构类型实战详解

今天学习了scala的结构类型,让我们看看代码

class Structural {def open() = print("A class interface opened") }

object test53 {
  def main(args:Array[String]){
    init(new {def open() = println("opened")})
    type X ={def open():Unit}
    def init(res:X) =res.open()
    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}) {
    res.open()
  }
}

我们来看看init方法,这个方法定义,只有拥有open方法的对像才能被当作参数,传入init函数。

type,将一个方法赋予一个别名,当我们下次用来表示这个方法的时候,就可以使用我们type定义的去表示该方法。

如:def init(res:X) =res.open()

我们也可以使用单例对像的方式创建一个带有open方法的对像,如

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

当然,我们也可以使用创建一个具有open方法的class的实例,来创建一个对像,然后该对像中,就具有open方法,因此,该对像可被init当作参数传入。

分享下更多的scala资源吧:

百度云盘:http://pan.baidu.com/s/1gd7133t

微云云盘:http://share.weiyun.com/047efd6cc76d6c0cb21605cfaa88c416

360云盘: http://yunpan.cn/cQN9gvcKXe26M (提取码:13cd)

信息来源于 DT大数据梦工厂微信公众账号:DT_Spark

关注微信账号,获取更多关于scala学习内容

上一篇:转:RTMPdump使用相关


下一篇:[php] PHP Fatal error: Class 'AMQPConnection' not found