2012-06-15 27 views
7

tôi đã thấy trong một vài thư viện, Phun ví dụ, thông số kỹ thuật kép gói như thế này:tuyên bố gói kép tại Scala

package cc.spray 
package http 

// code 

Đây có phải là chỉ mắt kẹo cho gói cc.spray.http, hoặc là có một lợi ích chức năng để phá vỡ hai ngoài như thế này?

Trả lời

8

Đó là tương đương với điều này:

package cc.spray.http 
import cc.spray._ 
// implicitly, import cc.spray.http._ 

Đó là, mỗi thành viên của gói cc.spray và các gói cc.spray.http có thể nhìn thấy. Mặt khác, các thành viên của gói cckhông hiển thị. Bằng cách này, người ta có thể sử dụng một cách an toàn các tên như java trong phân cấp gói mà không gây rắc rối, đồng thời, dễ dàng hiển thị các phạm vi gói mà bạn muốn hiển thị.

+0

Chỉ khi bạn nghĩ rằng bạn bắt đầu biết một ngôn ngữ, một cái gì đó biết và hiển thị mặc mát mẻ lên ... –

3

Các tuyên bố gói riêng biệt đặt cả hai phạm vi cc.spraycc.spray.http.

0

Giống như rất nhiều thứ khác, điều này đã được giới thiệu với Scala 2.8: câu trả lời khác cung cấp cho bạn "cái gì" (phơi bày nhiều phạm vi gói với bối cảnh hiện tại) và Scala doc chính thức có a lot more detail, cùng với một lý do chi tiết cho đối tượng địa lý.

1

chúng ta không quên một chiến thắng đẹp thu được từ phương pháp này

// Foo.scala 
package cc.spray 
package http 

class Foo { 
    ... 
} 

// Bar.Scala 
package cc.spray 
package bar 

import http._ // concise imports relative to cc.spray 

class Bar { 
    ... 
}