2011-06-06 8 views
25

क्या मैं स्कैला आरईपीएल में एक अनंत लूप के निष्पादन को रोक सकता हूं? इसे टाइप करें और आरईपीएल छोड़ने के बिना इसे रोकने का प्रयास करें।क्या मैं स्कैला आरईपीएल में एक अनंत लूप के निष्पादन को रोक सकता हूं?

while(true){} 

मैंने सोचा कि Ctrl-C की तरह कुछ काम करेगा।

+0

मैक ओएस एक्स – Jonas

+3

पर Ctrl-C मेरे लिए काम करता है Ctrl-C और Ctrl-Break विंडोज 7 – Adrian

+1

पर काम नहीं करता है आप किस स्केल का उपयोग कर रहे हैं? 2.9 में कुछ सुधार हुए थे ताकि यह आरईपीएल छोड़ने के बिना काम करेगा। विंडोज़ में भी Ctrl-C काम करना चाहिए। * संपादित करें * - बस इसे स्काला 2.9.0.1 पर बाहर की कोशिश की Windows Vista और वास्तव में Ctrl-C काम नहीं करता है पर ... – Jesper

उत्तर

11

यह अपने स्केला संस्करण पर निर्भर करता है। यदि आप पहले से ही स्कैला 2.9 पर हैं, तो यह केवल CTRL-C का उपयोग करके काम करेगा। आदेश में कुछ समय लग सकता है कि आदेश आरईपीएल तक पहुंच जाता है लेकिन यह कुछ समय में आपके अनंत लूप को रोक देगा।

आप स्केला के एक पुराने संस्करण (2.9 से पहले) पर हैं। निष्पादन को रोकने का कोई तरीका नहीं है। उन संस्करणों पर सीटीआरएल-सी पूरे स्कैला आरईपीएल को समाप्त कर देगा।

परिवर्तन स्काला 2.9.0.RC2 साथ पेश किया गया था। अधिक जानकारी के लिए changelog (part: Repl Improvements) देखें।

यह खिड़कियों पर काम नहीं करता है, "टॉगल ऊपर लिखें मोड" के साथ स्केला खिड़कियों वितरण ओवरराइड CTRL-C के स्काला आरईपीएल कीबाइंडिंग के बाद से। टाइप करें

scala> :keybindings 

विंडोज सिस्टम पर इस बाध्यकारी के लिए पूरी टिप्पणी देखने के लिए। मुझे लगता है कि यह विंडोज़ पर एक बग है।

+8

मेरे स्काला संस्करण 2.9.2 है, लेकिन –

+0

यह स्काला 2.11.8 दुभाषिया या तो (मैक ओएस एक्स टर्मिनल पर चल रहा है) पर मेरे लिए काम नहीं करता है काम नहीं करता। मैंने 'Stream.from (1) foreach println' और Ctrl-C को मारने का प्रयास किया। यह पूरी प्रक्रिया को रोकता है। – ShreevatsaR

+1

https://groups.google.com/forum/#!topic/scala-internals/PqK6GkZhJK0 देखें जो ऐसा लगता है कि यह क्षमता 2.10 से पहले कुछ समय (?!) हटा दी गई थी। और AFAICT यह अभी भी तय नहीं है: https://issues.scala-lang.org/browse/SI-6302 उह। – ShreevatsaR