11---
22layout : tour
3- title : 案例类 (Case Classes)
3+ title : 样例类 (Case Classes)
44partof : scala-tour
55
66num : 10
@@ -11,29 +11,29 @@ next-page: pattern-matching
1111previous-page : multiple-parameter-lists
1212---
1313
14- 案例类 (Case classes)和普通类差不多,只有几点关键差别,接下来的介绍将会涵盖这些差别。案例类非常适合用于不可变的数据 。下一节将会介绍他们在[ 模式匹配] ( pattern-matching.html ) 中的应用。
14+ 样例类 (Case classes)和普通类差不多,只有几点关键差别,接下来的介绍将会涵盖这些差别。样例类非常适合用于不可变的数据 。下一节将会介绍他们在[ 模式匹配] ( pattern-matching.html ) 中的应用。
1515
16- ## 定义一个案例类
17- 一个最简单的案例类定义由关键字 ` case class ` ,类名,参数列表(可为空)组成:
16+ ## 定义一个样例类
17+ 一个最简单的样例类定义由关键字 ` case class ` ,类名,参数列表(可为空)组成:
1818``` scala mdoc
1919case class Book (isbn : String )
2020
2121val frankenstein = Book (" 978-0486282114" )
2222```
23- 注意在实例化案例类 ` Book ` 时,并没有使用关键字` new ` ,这是因为案例类有一个默认的 ` apply ` 方法来负责对象的创建。
23+ 注意在实例化样例类 ` Book ` 时,并没有使用关键字` new ` ,这是因为样例类有一个默认的 ` apply ` 方法来负责对象的创建。
2424
25- 当你创建包含参数的案例类时 ,这些参数是公开(public)的` val `
25+ 当你创建包含参数的样例类时 ,这些参数是公开(public)的` val `
2626```
2727case class Message(sender: String, recipient: String, body: String)
2828val message1 = Message("guillaume@quebec.ca", "jorge@catalonia.es", "Ça va ?")
2929
3030println(message1.sender) // prints guillaume@quebec.ca
3131message1.sender = "travis@washington.us" // this line does not compile
3232```
33- 你不能给` message1.sender ` 重新赋值,因为它是一个` val ` (不可变)。在案例类中使用 ` var ` 也是可以的,但并不推荐这样。
33+ 你不能给` message1.sender ` 重新赋值,因为它是一个` val ` (不可变)。在样例类中使用 ` var ` 也是可以的,但并不推荐这样。
3434
3535## 比较
36- 案例类在比较的时候是按值比较而非按引用比较 :
36+ 样例类在比较的时候是按值比较而非按引用比较 :
3737```
3838case class Message(sender: String, recipient: String, body: String)
3939
@@ -44,7 +44,7 @@ val messagesAreTheSame = message2 == message3 // true
4444尽管` message2 ` 和` message3 ` 引用不同的对象,但是他们的值是相等的,所以` message2 == message3 ` 为` true ` 。
4545
4646## 拷贝
47- 你可以通过` copy ` 方法创建一个案例类实例的浅拷贝 ,同时可以指定构造参数来做一些改变。
47+ 你可以通过` copy ` 方法创建一个样例类实例的浅拷贝 ,同时可以指定构造参数来做一些改变。
4848```
4949case class Message(sender: String, recipient: String, body: String)
5050val message4 = Message("julien@bretagne.fr", "travis@washington.us", "Me zo o komz gant ma amezeg")
0 commit comments