2011-10-30 16 views
7

में स्कैला स्क्रिप्ट फ़ाइल बनाएं, मैं स्कैला के साथ खेल रहा हूं। मुझे जो चाहिए वह केवल फ़ंक्शन परिभाषाओं का एक समूह है, लेकिन ग्रहण में मैं केवल .scala फाइलें बना सकता हूं जिसके लिए एक फ़ंक्शन def किसी ऑब्जेक्ट या क्लास के अंदर होना चाहिए।एक्लिप्स

लेकिन मैं एक स्काला स्क्रिप्ट here है, जो एक वस्तु का उपयोग नहीं करता सभी कार्यों रैप करने के लिए देखने के ऑनलाइन,।

यह मुझे एक वस्तु का उपयोग करने के लिए अपने सभी कार्यों रैप करने के लिए ठीक है निश्चित रूप से है, लेकिन मैं बस सोच रहा हूँ यह आवश्यक है या नहीं। धन्यवाद!

+3

आप कक्षाएं, वस्तुओं या पैकेज वस्तुओं के किसी भी आवश्यकता के बिना, IntelliJ –

उत्तर

2

लेकिन मैं यहाँ एक स्काला स्क्रिप्ट देखने के ऑनलाइन, है, जो एक वस्तु का उपयोग नहीं करता सभी कार्यों रैप करने के लिए।

ध्यान दें कि इस मामले में, कार्यों अन्य फ़ाइलों से नहीं कहा जा सकता है (वे संकलक-जनरेटेड नाम जब रन के साथ एक object में लिपटे रहे हैं)। यदि आपको "फ़ंक्शन परिभाषाओं का केवल एक ब्रंच चाहिए", तो संभवतः यह नहीं है कि आप क्या चाहते हैं :) AFAIK, स्कैला आईडीई फिलहाल स्क्रिप्ट फ़ाइलों का समर्थन नहीं करता है, लेकिन आप एक सुविधा अनुरोध here लॉग कर सकते हैं।

1

मेरे ज्ञान के लिए कार्य या चर को पूरी तरह से दायरे से बाहर लिखना संभव नहीं है। उस ने कहा कि कक्षा/वस्तु परिभाषाओं के बाहर उन्हें लिखना संभव है। आपको बस उन्हें package object में लपेटना होगा। क्या हो रहा है मूल रूप से किसी दिए गए वर्ग या ऑब्जेक्ट में फ़ंक्शन/चर को जोड़ने के बजाय, आप इसे किसी पैकेज में जोड़ते हैं। उदाहरण:

package test 
package object inside { 
    def hello = println("Hello from outer space!") 
    class Foo { 
    hello // call the function from the package 
    } 
} 

अब जब आप फू बनाते हैं, तो आपको "बाहरी अंतरिक्ष से हैलो" मुद्रित करना चाहिए।

पूरी तरह से जानते हुए भी कि मैं क्या बारे में बात कर रहा हूँ के बिना, मैं कल्पना कर सकता स्क्रिप्ट संस्करण आप ऊपर बताए गए काम करता है कि, क्योंकि स्क्रिप्ट एक वातावरण किसी तरह का में चलाया जा रहा है। तो कल्पना करें कि कुछ वर्ग स्क्रिप्ट को लोड कर रहा है, फिर इसे किसी ऑब्जेक्ट में लपेटकर चला रहा है। इससे ऊपर की तरह कुछ हद तक एक स्थिति का अर्थ होगा: कार्य अभी भी कहीं "संबंधित" हैं।

+0

में एक वस्तु स्काला स्क्रिप्ट शैली का समर्थन करता है में लपेटकर बिना स्क्रिप्ट संपादित कर सकते हैं। –

2

हाँ, ग्रहण में आप एक वस्तु या एक कक्षा में सब कुछ लपेटो करने की जरूरत है।

जब तक आप किसी ऑब्जेक्ट में कोड लपेटते हैं और Shebang से बचते हैं, तब तक आप एक्लिप्स में स्कैला स्क्रिप्ट संपादित कर सकते हैं। बस scala -i scriptName.scala -e "Main.main(args)" के साथ स्क्रिप्ट चलाएं (आपको अपने path पर स्केल वितरण का "बिन" फ़ोल्डर प्रदान करना है)।

foo.scala:

object Main extends App { 
    println ("foo") 
} 

यह चलाने के लिए:

scala -i foo.scala -e "Main.main(args)"