2011-12-18 11 views
27

कृपया मजाकिया शीर्षक क्षमा करें, मैं इसे "zip bomb" के साथ समानता में उपयोग कर रहा हूं। क्या स्केल स्रोत फ़ाइल बनाना संभव है, जो संकलित होने पर, बड़ी संख्या में क्लास फ़ाइलों (या एक बहुत बड़ी एकल श्रेणी फ़ाइल) उत्पन्न करेगा? क्या स्रोत फ़ाइल के आकार के साथ रैखिक रूप से कक्षा फ़ाइलों का आकार तेजी से बढ़ सकता है?स्कैला बम? (एक ज़िप बम की तरह)

+1

आपको नरक में क्या संभवतः इसकी आवश्यकता हो सकती है? –

+1

@ निकितावोल्कोव यह एक दिलचस्प मानसिक अभ्यास की तरह लगता है, लेकिन मुझे एक व्यावहारिक अनुप्रयोग खोजने की कोशिश करने में समस्या है। – Vatine

+6

ठीक है, उन लोगों के लिए जिन्हें प्रैक्टिकल एप्लिकेशन की आवश्यकता है: एक सेवा की रक्षा करने की कोशिश कर रहा है जो डॉस हमलों से स्कैला कोड संकलित करता है। –

उत्तर

32

विशेषज्ञता विशेष रूप से प्रकार के पैरामीटर की संख्या में घातीय रूप से घातीय है।

class Huge[@specialized A, @specialized B, @specialized C](
    val a: A, val b: B, val c: C 
) {} // 730 files, 2.9 MB 

class Gigantic[@specialized A, @specialized B, @specialized C, @specialized D](
    val a: A, val b: B, val c: C, val d: D 
) {} // 6562 files, 26 MB 

पैटर्न मिलान भी जटिल मामलों के लिए कोड दोहराव का एक बहुत शामिल कर सकते हैं (हालांकि मैं यह मुश्किल वास्तव में भविष्यवाणी करने के लिए जब यह हो जाएगा लगता है)।

+0

आह, मैंने कभी विशेषज्ञता का उपयोग नहीं किया है, महान जवाब! –

+2

रेक्स, जानकारी के लिए, पैटर्न मिलान https://issues.scala-lang.org/browse/SI-1133 के लिए उठाए गए बग है, यह विफल रहता है क्योंकि बहुत अधिक कोड उत्पन्न होता है। हालांकि यह 2.10 में नए वर्चुअल पैटर्न मैचर के साथ तय किया जाना चाहिए। –

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