2012-09-10 13 views
5

की छुपा परिभाषा से साथी ऑब्जेक्ट को रोकें मुझे लगता है कि उदाहरण के साथ दिखाना आसान है।स्कैला: मूल वर्ग

चलो कहते हैं कि मैं एक स्थिति मामला वर्ग, एक स्थिति साथी वस्तु के साथ एक विकल्प के निर्माता प्रदान करने के लिए प्रयोग किया जाता है इस तरह है, करते हैं:

case class Condition(
    field: String, 
    values: List[String]) 
} 

object Condition { 
    def apply(field: String, value: String): Condition = { 
    Condition(field, List(value)) 
    } 
} 

जब मैंने इसे एक और से आयात मैं निम्नलिखित मिल चेतावनी (जो अंततः बदल जाता है एक त्रुटि में):

import utils.query.Condition 

[warn] [...]/ConditionBuilder.scala:14: imported `Condition' is permanently hidden by definition of object Condition in package query 
[warn] import utils.query.Condition 
[warn]  ^
[warn] one warning found 

मैं स्थिति प्रकार के लिए उपयोग करना चाहते हैं, जब एक चर के प्रकार declargin, और जब क्रियान्वित साथी वस्तु, करने के लिए इसे से एक तरीकों

०१२३५१६४१० है

क्या इसे प्राप्त करने और इस चेतावनी से बचने का कोई तरीका है (निश्चित रूप से साथी वस्तु का नाम बदलने के अलावा)?

+0

स्कैला कंपाइलर का कौन सा संस्करण आप उपयोग कर रहे हैं? –

+0

क्या मैं पूछ सकता हूं कि किसी भी मौके पर पैकेज क्वेरी में शर्त परिभाषित की गई है या नहीं? इस मामले में, बस आयात छोड़ दें और आप कर चुके हैं। –

+0

मैं स्कैला कंपाइलर का उपयोग कर रहा हूं जो प्ले 2.0.3 के साथ बंडल आता है: स्कैला संस्करण 2.9.1 में आपका स्वागत है। फाइनल (जावा हॉटस्पॉट (टीएम) 64-बिट सर्वर वीएम, जावा 1.7.0_06)। – opensas

उत्तर

2

अब तक अब, वैकल्पिक हल मैंने पाया इस तरह आयात कर रहा है:

import utils.query 

[...] 

val myCondition: query.Condition 

और चेतावनी चला गया है, लेकिन मुझे लगता है कि वहाँ एक बेहतर समाधान हो जाना चाहिए था ...

1

क्या आप प्रतिसाद नहीं वर्णन जिस तरह से यह काम करता है (या एक पूर्ण नमूना प्रदान नहीं करता)।

यह एक पुराने संकलन वातावरण की तरह लगता है। किसी भी बिंदु पर पैकेज वस्तुओं को शामिल किया गया था? एक साफ संकलन करें, जो भी निवासी कंपाइलर को पुनरारंभ करें, और हमें सुबह में बुलाएं।

उदाहरण के लिए, एक आयात खंड आयात पी। {X => y} का नाम बदलता है termname y और प्रकार का नाम y के प्रकार का नाम p.x को termname p.x। (SLS 4,7)

लेकिन वहाँ मामले वर्गों और अपने साथियों के चौराहे, चारों ओर कोड में एक बड़ी टिप्पणी है जो इस शीर्ष दस मज़ा टिप्पणी करती है:

// What exactly this implies and whether this is a sensible way to 
// enforce it, I don't know. 

मैं यह नहीं कह रहा हूँ टिप्पणी आपके मामले पर कोई आवश्यक असर है, लेकिन यह एक अच्छी लाइन है।

0

मैं नाम Server के साथ एक मुख्य वर्ग था और मैं निम्नलिखित तरीके से मुख्य वर्ग में एक घाट सर्वर बनाने गया था:

 import org.eclipse.jetty.server.Server 

    var server:Server=new Server() 

मुझे मिल नीचे sbt run

[warn] /home/xxx/xxx/xxx/src/main/scala/com/xxx/xxx/main/Server.scala:3: imported `Server' is permanently hidden by definition of object Server in package main 
    [warn] import org.eclipse.jetty.server.Server 
    [warn]        ^
    [warn] one warning found 

चलाने पर चेतावनी दी मैंने अपना मुख्य वर्ग बदल दिया और चेतावनी गायब हो गई।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^