scala - 差异 Scala 类声明
问题描述
我想问一下下面这两个类声明有什么区别。
class Person(name: String, age: Int)
或者
class Person() {
var name: String = ""
var age: Int = 0
}
解决方案
class Person(name: String, age: Int)
name
并且age
是构造函数参数。因此,它们是:
- 必需- 为了创建一个
Person
实例 - 不可变- 值不能更改
- private - (默认),不能通过类实例访问
class Person() {
var name: String = ""
var age: Int = 0
}
name
并且age
是类数据成员。他们是:
- 在构造期间未指定- 但为每个
Person
实例提供相同的默认值 - 可变的 - 因为它们是
var
变量 - public -(默认)并且可以通过类实例访问和修改
那么,有什么区别呢?几乎所有的。
推荐阅读
- qt - 在具有多层选项卡小部件的小部件中处理选项卡顺序
- mysql - 如果条件大于 100,则选择行
- vim - vim 用不同的文本位置更改多行的文本?
- django - 删除模板中的对象 - django
- unit-testing - 如何测试创建和注入依赖项的函数
- node.js - Koa 服务器的 Access-Control-Allow-Origin 问题
- django-admin - 如何在 admin.py 中按用户选择 list_filter?
- reactjs - 从无模式 JSON 生成动态表单
- java - 如何使用 java.awt 中的 Point 类找到二维数组的点
- react-native - 如何使用 onPress 将样式应用于某个 ListItem?