2013-08-05 11 views
6

RubyMine डिबगर में "समाप्त नहीं की गई स्ट्रिंग फ़ाइल के अंत मिलता है", बस देखता में इस टाइप करें:स्ट्रिंग RubyMine

';' 

या

";" 

और आपको मिल त्रुटि:

"unterminated string meets end of file" 

यह क्यों है? यह रेल कंसोल में नहीं होता है, और रुबीमाइन के साथ इसका कोई संबंध नहीं है, जहां तक ​​मैं कह सकता हूं।

उत्तर

8

यह रुबी डीबगर का परिणाम रूबी दुभाषिया से अलग पार्सिंग नियमों का परिणाम है। वास्तव में, नियमित रूबी डीबगर, irb से या ruby कमांड से इसी तरह के व्यवहार को प्रदर्शित करता है। एक स्ट्रिंग शाब्दिक एक भी अर्धविराम से मिलकर बना सकते हैं, सिर्फ एक बैकस्लैश के साथ यह से बचने के लिए:

$ irb 
> require 'debugger' 
=> true 
> debugger 
(rdb:1) ';' 
*** SyntaxError Exception: /usr/local/rvm/rubies/ruby-1.9.3-p286/lib/ruby/1.9.1/irb/context.rb:166: unterminated string meets end of file 
(rdb:1) '\;' 
";" 

यह ध्यान रखें कि रूबी डिबगर कमांड लाइन पार्सर नहीं है महत्वपूर्ण है वैकल्पिक हल, हालांकि, स्पष्ट है irb या ruby दुभाषिया के द्वारा प्रयोग किया पार्सर के रूप में ही: यह चारों ओर पार्स डिबगर आदेशों बनाया गया है backtrace जैसे, break आदि और नहीं (irb के मामले में खोल की तरह एक्सटेंशन के साथ) रूबी भाषा पार्स करने के लिए। रूबी (या रूबी-शैली) अभिव्यक्तियों का मूल्यांकन करने के लिए इसका सीमित समर्थन है। यह निश्चित रूप से रूबी कार्यक्रमों के प्रभावी डीबगिंग के लिए महत्वपूर्ण है। हालांकि, आपको यह उम्मीद नहीं करनी चाहिए कि यह irb या ruby कमांड को पार्स करने में सक्षम हो, तो कमांड स्वयं ही चीजों को पार्स या पार्स करने में सक्षम होगा। कुछ मामलों में, इस तरह, यह कुछ अभिव्यक्तियों को संभाल सकता है लेकिन रूबी भाषा के विपरीत डीबगर के पार्सिंग नियमों के अधीन उन्हें बचने की आवश्यकता है।

रेल सांत्वना irb के शीर्ष पर बनाया गया, और इस प्रकार एक रूबी खोल है और रूबी भाषा सिर्फ irb और ruby तरह की पार्स नियम का सम्मान करता है।

+0

मुझे gsub ('\;', ',') का उपयोग करने में एक ही समस्या थी - दुभाषिया ने एक काम किया, डीबग प्रॉम्प्ट ने दूसरा किया – Mitch

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