Skip to content

Commit 0d521d1

Browse files
committed
modify the Simplify Chinese translation of singleton-objects.md according to declan94's suggestions
1 parent 7198cd8 commit 0d521d1

File tree

1 file changed

+17
-17
lines changed

1 file changed

+17
-17
lines changed

_zh-cn/tour/singleton-objects.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -14,29 +14,29 @@ next-page: regular-expression-patterns
1414
previous-page: pattern-matching
1515
---
1616

17-
单例对象是一种特殊的类, 有且只有一个实例. 和惰性变量一样, 单例对象是延迟创建的, 当它被引用到的时候创建.
17+
单例对象是一种特殊的类有且只有一个实例和惰性变量一样单例对象是延迟创建的当它被引用到的时候创建
1818

19-
作为一个顶级值, 单例对象只有一个实例.
19+
作为一个顶级值单例对象只有一个实例
2020

21-
作为一种包装类, 或者局部值, 单例对象表现得和惰性变量一样.
21+
作为一种包装类或者局部值单例对象表现得和惰性变量一样
2222

2323
# 定义一个单例对象
24-
一个单例对象是就是一个值. 单例对象的定义方式很像类, 但是使用关键字 `object`:
24+
一个单例对象是就是一个值单例对象的定义方式很像类但是使用关键字 `object`
2525
```tut
2626
object Box
2727
```
2828

29-
下面例子中的单例对象包含一个方法:
29+
下面例子中的单例对象包含一个方法
3030
```
3131
package logging
3232
3333
object Logger {
3434
def info(message: String): Unit = println(s"INFO: $message")
3535
}
3636
```
37-
方法 `info` 可以在程序中的任何地方被引用. 像这样创建功能性方法是单例对象的一种常见用法.
37+
方法 `info` 可以在程序中的任何地方被引用像这样创建功能性方法是单例对象的一种常见用法
3838

39-
下面让我们来看看如何在另外一个包中使用 `info` 方法:
39+
下面让我们来看看如何在另外一个包中使用 `info` 方法
4040

4141
```
4242
import logging.Logger.info
@@ -50,15 +50,15 @@ class Test {
5050
}
5151
```
5252

53-
因为 import 语句 `import logging.Logger.info`, 方法 `info` 在此处是可见的.
53+
因为 import 语句 `import logging.Logger.info`方法 `info` 在此处是可见的
5454

55-
想要使用引用, 被引用的标识需要一个"固定路径", 一个单例对象就是一个固定路径.
55+
import语句要求被导入的标识具有一个“静态位置”,一个单例对象由于全局唯一,所以具有静态位置。
5656

57-
注意: 如果一个 `object` 没定义在顶层而是定义在另一个类或者单例对象中, 那么这个单例对象和其他类普通成员一样是 "路径相关的". 这意味着有两种行为, `class Milk``class OrangeJuice`, 一个类成员 `object NutritionInfo` "依赖" 于包装它的实例, 要么是牛奶要么是橙汁. `milk.NutritionInfo` 则完全不同于`oj.NutritionInfo`.
57+
注意如果一个 `object` 没定义在顶层而是定义在另一个类或者单例对象中那么这个单例对象和其他类普通成员一样是路径相关的”。这意味着有两种行为`class Milk``class OrangeJuice`一个类成员 `object NutritionInfo` “依赖”于包装它的实例要么是牛奶要么是橙汁 `milk.NutritionInfo` 则完全不同于`oj.NutritionInfo`
5858

5959
## 伴生对象
6060

61-
当一个单例对象和某个类共享一个名称时, 这个单例对象称为 _伴生对象_. 同理, 这个类被称为是这个单例对象的伴生类. 类和它的伴生对象可以互相访问其私有成员. 使用伴生对象来定义那些在伴生类中不依赖于实例化对象而存在的成员变量或者方法.
61+
当一个单例对象和某个类共享一个名称时这个单例对象称为 _伴生对象_ 同理这个类被称为是这个单例对象的伴生类类和它的伴生对象可以互相访问其私有成员使用伴生对象来定义那些在伴生类中不依赖于实例化对象而存在的成员变量或者方法
6262
```
6363
import scala.math._
6464
@@ -76,9 +76,9 @@ val circle1 = new Circle(5.0)
7676
circle1.area
7777
```
7878

79-
这里的 `class Circle` 有一个成员 `area` 是和具体的实例化对象相关的, 单例对象 `object Circle` 包含一个方法 `calculateArea` 则在每一个实例化对象中都是可见的.
79+
这里的 `class Circle` 有一个成员 `area` 是和具体的实例化对象相关的单例对象 `object Circle` 包含一个方法 `calculateArea` ,它在每一个实例化对象中都是可见的。
8080

81-
伴生对象也可以包含工厂方法:
81+
伴生对象也可以包含工厂方法
8282
```tut
8383
class Email(val username: String, val domainName: String)
8484
@@ -101,12 +101,12 @@ scalaCenterEmail match {
101101
case None => println("Error: could not parse email")
102102
}
103103
```
104-
伴生对象 `object Email` 包含有一个工厂方法 `fromString` 用来根据一个 String 创建 `Email` 实例. 在这里我们返回的是 `Option[Email]` 以防有语法分析错误.
104+
伴生对象 `object Email` 包含有一个工厂方法 `fromString` 用来根据一个 String 创建 `Email` 实例在这里我们返回的是 `Option[Email]` 以防有语法分析错误
105105

106-
注意: 类和它的伴生对象必须定义在同一个源文件里. 如果需要在 REPL 里定义类和其伴生对象, 需要将它们定义在同一行或者进入 `:paste` 模式.
106+
注意类和它的伴生对象必须定义在同一个源文件里如果需要在 REPL 里定义类和其伴生对象需要将它们定义在同一行或者进入 `:paste` 模式
107107

108108
## Java 程序员的注意事项 ##
109109

110-
在 Java 中 `static` 成员对应于 Scala 中的伴生对象的普通成员.
110+
在 Java 中 `static` 成员对应于 Scala 中的伴生对象的普通成员
111111

112-
在 Java 代码中调用伴生对象时, 伴生对象的成员会被定义成伴生类中的 `static` 成员. 这称为_静态转发_. 这种行为发生在当你自己没有定义一个伴生类时.
112+
在 Java 代码中调用伴生对象时伴生对象的成员会被定义成伴生类中的 `static` 成员。这称为 _静态转发_这种行为发生在当你自己没有定义一个伴生类时

0 commit comments

Comments
 (0)