2012-06-15 13 views
7

मैं कुछ पुस्तकालयों में देखा है, उदाहरण के लिए स्प्रे, इस तरह दोहरे पैकेज विनिर्देशों:स्काला में दोहरी पैकेज बयान

package cc.spray 
package http 

// code 

पैकेज cc.spray.http के लिए यह सिर्फ आंख कैंडी है, या वहाँ एक है इस तरह दो अलग तोड़ने के लिए कार्यात्मक लाभ?

उत्तर

8

कि इस के बराबर है:

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

है, पैकेज cc.spray की और पैकेज cc.spray.http के हर सदस्य दिखाई दे रहे हैं। दूसरी ओर, पैकेज cc के सदस्य दिखाई नहीं दे रहे हैं।

इस तरह कोई भी परेशानी पैदा किए बिना अपने पैकेज पदानुक्रम में java जैसे नामों का सुरक्षित रूप से उपयोग कर सकता है, और साथ ही, आसानी से पैकेज स्कॉप्स को दृश्यमान दिखाना चाहता है।

+0

से प्राप्त एक अच्छा जीत भूल नहीं बस जब आपको लगता है कि आप एक भाषा को पता है शुरू करते हैं, कुछ पता और शांत शो ... –

3

अलग पैकेज विवरण cc.spray और cc.spray.http दोनों दायरे में रखता है।

0

कई अन्य चीजों की तरह, इसे स्कैला 2.8 के साथ पेश किया गया था: अन्य उत्तरों आपको "क्या" (वर्तमान संदर्भ में एकाधिक पैकेज स्कोप का खुलासा करते हैं) देते हैं और आधिकारिक स्कैला दस्तावेज़ में a lot more detail है, साथ ही विस्तृत तर्क के साथ सुविधा के लिए।

1

चलो इस दृष्टिकोण

// 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 { 
    ... 
}