作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经为这个烦人的问题苦苦挣扎了一段时间,但没有找到一个优雅的解决方案。
假设我有这样一个类层次结构:
class StatWithBounds[A](val min: A, val max: A, val currentValue: A)
class StatBetween0And20(initialValue: Int) extends StatWithBounds[Int](0, 20, initialValue)
class PositiveStatOnly(initialValue: Int) extends StatWithBounds[Int](0, Integer.MAX_VALUE, initialValue)
class UncappedPercentage(initialValue: Int) extends StatWithBounds[Int](0, Integer.MAX_VALUE, initialValue)
initialValue 的复制/粘贴过于冗长。此外,如果我想做这样的事情:
class Strength(initialValue: Int) extends StatBetween0And20(initialValue)
class Intelligence(initialValue: Int) extends StatBetween0And20(initialValue)
class Piety(initialValue: Int) extends StatBetween0And20(initialValue)
多么糟糕的复制/粘贴(想象一下我还有 10 个子类)!
有没有一种优雅的方法来解决这个困惑的问题?
最佳答案
如果不需要原始类,可以使用 traits 代替:
trait StatWithBounds[A] {
def min: A
def max: A
def currentValue: A
}
trait StatBetween0And20 extends StatWithBounds[Int] {
def min = 0
def max = 20
}
class Strength(val currentValue: Int) extends StatBetween0And20
class Intelligence(val currentValue: Int) extends StatBetween0And20
...
或者,您也可以不使用这么长的变量名!
class Stat[A](val min: A, val max: A, val current: A)
class Stat20(i: Int) extends Stat[Int](0, 20, i)
class Strength(i: Int) extends Stat20(i)
class Intelligence(i: Int) extends Stat20(i)
...
看看噪音降低了多少?长变量名是样板的一种形式。有时为了清楚起见,您需要它,但通常不是为了将参数传递给构造函数。
关于Scala、类层次结构和构造函数复制/粘贴,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13988536/
我正在尝试将多个水平链接的 Button 和 TextView 垂直链接为 View 集,但仍保持平面 View 层次结构。这是我的初始布局和代码:
到目前为止,我已经在Google BigQuery上训练了几种模型,目前我需要查看模型的外观(即架构,损失函数等)。 有没有办法获取这些信息? 最佳答案 仔细阅读文档后,我可以说该功能尚不存在。我什至
本文实例讲述了PHP实现二叉树深度优先遍历(前序、中序、后序)和广度优先遍历(层次)。分享给大家供大家参考,具体如下: 前言: 深度优先遍历:对每一个可能的分支路径深入到不能再深入为止,而且每个
我是一名优秀的程序员,十分优秀!