作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
随着 Scala 等编程语言对不变性的强调(避免“var”),这是否意味着我的对象中的“状态修改方法”必须返回实例的副本(具有新状态)?
让我们考虑乌龟。我想像这样移动我的乌龟:
val turtle = new Turtle(0, 0, "north")
val turtle2 = turtle.turnLeft().forward(5).turnRight().backward(2)
def turnLeft {
self.copy(orientation = self.orientation match {
case "north" => "west"
case "east" => "north"
case "south" => "east"
case "west" => "south"
})
}
最佳答案
创建大量的短期对象是 Scala 的一个标志性特征。它通常不会很昂贵,只要您在具有足够大小的堆的 JVM 上运行它,并有足够数量的年轻代内存来容纳所有的流失。
话虽如此,不变性不是一种宗教。常识应该占上风,并在坚持“范式”变得过于费力的情况下指导设计决策。
关于scala - 不变性设计(在 Scala 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27761429/
我是一名优秀的程序员,十分优秀!