File tree Expand file tree Collapse file tree 1 file changed +74
-1
lines changed Expand file tree Collapse file tree 1 file changed +74
-1
lines changed Original file line number Diff line number Diff line change 1
1
---
2
2
layout : tour
3
- title : Packages and Imports
3
+ title : 包和导入
4
4
5
5
discourse : true
6
6
@@ -12,3 +12,76 @@ language: zh-cn
12
12
13
13
previous-page : named-arguments
14
14
---
15
+
16
+ # 包和导入
17
+ Scala 使用包来创建命名空间,从而允许你创建模块化程序。
18
+
19
+ ## 创建包
20
+ 通过在 Scala 文件的头部声明一个或多个包名称来创建包。
21
+
22
+ ```
23
+ package users
24
+
25
+ class User
26
+ ```
27
+ 一个惯例是将包命名为与包含 Scala 文件的目录名相同。 但是,Scala 并未对文件布局作任何限制。 在一个 sbt 工程中,` package users ` 的目录结构可能如下所示:
28
+ ```
29
+ - ExampleProject
30
+ - build.sbt
31
+ - project
32
+ - src
33
+ - main
34
+ - scala
35
+ - users
36
+ User.scala
37
+ UserProfile.scala
38
+ UserPreferences.scala
39
+ - test
40
+ ```
41
+ 注意 ` users ` 目录是包含在 ` scala ` 目录中的,该包中包含有多个 Scala 文件。 包中的每个 Scala 文件都可以具有相同的包声明。 声明包的另一种方式是使用大括号:
42
+ ```
43
+ package users {
44
+ package administrators {
45
+ class NormalUser
46
+ }
47
+ package normalusers {
48
+ class NormalUser
49
+ }
50
+ }
51
+ ```
52
+ 如你所见,这允许包嵌套并提供了对范围和封装的更好控制。
53
+
54
+ 包名称应全部为小写,如果代码是在拥有独立网站的组织内开发的,则应采用以下的约定格式:` <top-level-domain>.<domain-name>.<project-name> ` 。 例如,如果 Google 有一个名为 ` SelfDrivingCar ` 的项目,则包名称将如下所示:
55
+ ```
56
+ package com.google.selfdrivingcar.camera
57
+
58
+ class Lens
59
+ ```
60
+ 这可以对应于以下目录结构:` SelfDrivingCar/src/main/scala/com/google/selfdrivingcar/camera/Lens.scala `
61
+
62
+ ## 导入
63
+ ` import ` 语句用于导入其他包中的成员(类,特质,函数等)。 使用相同包的成员不需要 ` import ` 语句。 导入语句可以有选择性:
64
+ ```
65
+ import users._ // 导入包 users 中的所有成员
66
+ import users.User // 导入类 User
67
+ import users.{User, UserPreferences} // 仅导入选择的成员
68
+ import users.{UserPreferences => UPrefs} // 导入类并且设置别名
69
+ ```
70
+
71
+ Scala 不同于 Java 的一点是 Scala 可以在任何地方使用导入:
72
+
73
+ ``` tut
74
+ def sqrtplus1(x: Int) = {
75
+ import scala.math.sqrt
76
+ sqrt(x) + 1.0
77
+ }
78
+ ```
79
+ 如果存在命名冲突并且你需要从项目的根目录导入,请在包名称前加上 ` _root_ ` :
80
+ ```
81
+ package accounts
82
+
83
+ import _root_.users._
84
+ ```
85
+
86
+
87
+ 注意:包 ` scala ` 和 ` java.lang ` 以及 ` object Predef ` 是默认导入的。
You can’t perform that action at this time.
0 commit comments