scala - Scala var 最佳实践 - 封装
问题描述
例如,我试图了解在 scala 中使用 vars 的最佳实践是什么
class Rectangle() {
var x:Int = 0
}
或类似的东西:
class Rectangle() {
private var _x:Int = 0
def x:Int = _x
def x_(newX:Int):Unit = _x=newX
}
哪一个可以被认为是更好的?为什么?谢谢!
解决方案
正如 Luis 在评论中已经解释的那样,只要您能够避免,就应该避免使用 vars,而像您给出的这样一个简单的案例是可以使用以下内容更好地设计的案例之一:
// Companion object is not necessary in your case
object Rectangle {
def fromInt(x: Int): Option[Rectangle] = {
if(x > 0) {
Some(Rectangle(x))
} else None
}
final case class Rectangle(x: Int)
当您无法避免在 scala 中使用 var 时,这种情况非常罕见。Scala 的一般习语是:“让你的变量不可变,除非有充分的理由不这样做”
推荐阅读
- php - 如何向使用 $_GET 生成的页面添加评论表单
- node.js - 你应该如何在 TypeScript 中为 Morgan 创建 Winston 记录器流
- python-3.x - 查找包含 Data 的 Pandas 数据框的最后一行
- java - 在 Java 中混合组合和继承
- android - 如何使用 FragmentStatePagerAdapter 处理自定义日历中的子片段?
- excel - 使用 VBA 复制不相交的范围
- hadoop - 如何在 hive 中使用外部表?
- amazon-web-services - 创建 RDS 事件订阅时出错
- c# - DateTime + TZ -> NodaTime 转换
- c++ - 如何在 c++98 中初始化作为类成员的结构?