加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在类或对象中编写算法有什么缺点(在Scala中)?

发布时间:2020-12-16 18:22:12 所属栏目:安全 来源:网络整理
导读:class A { def algorithmImplementation (...) = { ... }}object A { def algorithmImplementation (...) = { ... }} 在哪种情况下应该使用该类,以及应该使用该对象(用于实现算法,例如Dijkstra-Algorithm,如上所示)? 做出这样的决定时应该考虑哪些标准? 目
class A {
  def algorithmImplementation (...) = { ... }
}

object A {
  def algorithmImplementation (...) = { ... }
}

在哪种情况下应该使用该类,以及应该使用该对象(用于实现算法,例如Dijkstra-Algorithm,如上所示)?

做出这样的决定时应该考虑哪些标准?

目前,我无法真正看到使用课程的好处是什么.

解决方法

如果您只有一个实现,这可能主要是判断调用.你提到了Dijkstra的算法,该算法在图表上运行.现在,您可以编写该算法,将图形对象作为显式参数.在这种情况下,算法可能会出现在Graph singleton对象中.然后它可能被称为Graph.shortestPath(myGraph,fromNode,toNode).

或者您可以在Graph类中编写算法,在这种情况下,它不再将图形作为显式参数.现在它被称为myGraph.shortestPath(fromNode,toNode).

当存在一个主要参数(例如,图形)时,后一种情况可能更有意义,尤其是作为算法的一种上下文的一种.但它可能归结为您喜欢的语法.

但是,如果您有多个实现,那么平衡会更多地提示类方法,尤其是当选择哪个实现更好时,取决于表示的选择.例如,您可能有两个不同的shortestPath实现,一个在邻接矩阵上工作得更好,另一个在邻接列表上工作得更好.使用类方法,您可以轻松地为两个不同的表示形式提供两个不同的图表类,每个图表类都可以拥有自己的shortestPath实现.然后,当您调用myGraph.shortestPath(fromNode,toNode)时,即使您不知道myGraph是否使用邻接矩阵或邻接列表,您也会自动获得正确的实现. (这是OO的重点.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读