专栏首页Soul Joy HubScala——Traits

Scala——Traits

类似于Java中的接口,trait被用于通过所支持的方法特例化来定义对象。如Java 8中一样,Scala允许trait被部分实现。和class相比,trait可以没有构造函数。如:

trait Similarity {
  def isSimilar(x: Any): Boolean
  def isNotSimilar(x: Any): Boolean = !isSimilar(x)
}

这个trait有两个方法 isSimilar and isNotSimilar. isSimila没实现,而 method isNotSimilar实现了. 因此, classes extends 这个trait,只用提供对isSimilar的实现:

class Point(xc: Int, yc: Int) extends Similarity {
  var x: Int = xc
  var y: Int = yc
  def isSimilar(obj: Any) =
    obj.isInstanceOf[Point] &&
    obj.asInstanceOf[Point].x == x
}
object TraitsTest extends App {
  val p1 = new Point(2, 3)
  val p2 = new Point(2, 4)
  val p3 = new Point(3, 3)
  println(p1.isNotSimilar(p2))
  println(p1.isNotSimilar(p3))
  println(p1.isNotSimilar(2))
}

输出:

false
true
true

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 业界搜索算法应用概览(v.2019)

    用户1621453
  • 学生信息管理系统(C实现)

    用户1621453
  • 《机器学习技法》学习笔记13——深度学习

    http://blog.csdn.net/u011239443/article/details/76692801

    用户1621453
  • eeglab教程系列(8)-选择数据的epochs并进行比较

    为了比较一个被试两种条件下的ERP,需要首先为两种条件各创建时间段的dataset。在本实验中,一半的目标刺激呈现在位置1,一半的目标刺激呈现在位置2。

    脑机接口社区
  • eeglab中文教程系列(8)-选择数据的epochs并进行比较

    本教程为脑机学习者Rose发表于公众号:脑机接口社区(微信号:Brain_Computer),QQ交流群:903290195

    脑机接口社区
  • CocoaPods 制作私有库 Swift/OC 过程、注意点和错误总结

    最近由于要做组件化,所以就顺便看了看私有库的制作,整体上制作的过程是比较简单的,但有一些点你注意到的话会在制作过程会少去很多的麻烦,在网上搜的制作过程...

    Mr.RisingSun
  • 专栏:013:我要你知道实时票房.

    谢伟
  • 论文阅读理解 - CenterLoss: A Discriminative Feature Learning Approach

    由于CNNs模型采用SGD方法以 mini-batch 的方式进行优化,难以很好的反应深度新特征的全局分布. 且对于大规模训练集,也很难将所有的训练样本一次性的...

    AIHGF
  • SpringBoot实战 | 配置文件详解

    首先构建 SpringBoot 项目,不会的看这篇旧文 使用 IDEA 构建 Spring Boot 工程。

    一个优秀的废人
  • 向mysql配置文件中添加日志配置

    socket = usr/local/lnmp/mysql-5.7.21/mysql.sock

    93年的老男孩

扫码关注云+社区

领取腾讯云代金券