में लागू वापसी मूल्य रूबी के लिए कुछ हद तक नया है और हालांकि मुझे यह बहुत ही सहज ज्ञान युक्त भाषा मिलती है, मुझे समझ में कुछ कठिनाई हो रही है कि कैसे अंतर्निहित वापसी मूल्य व्यवहार करते हैं।रुबी
मैं टॉमकैट लॉग को grep करने के लिए एक छोटे से प्रोग्राम पर काम कर रहा हूं और प्रासंगिक डेटा से पाइप-सीमांकित सीएसवी फाइलें उत्पन्न करता हूं। यहां एक सरलीकृत उदाहरण दिया गया है जिसका उपयोग मैं लॉग एंट्री से लाइनें उत्पन्न करने के लिए कर रहा हूं।
class LineMatcher
class << self
def match(line, regex)
output = ""
line.scan(regex).each do |matched|
output << matched.join("|") << "\n"
end
return output
end
end
end
puts LineMatcher.match("00:00:13,207 06/18 INFO stateLogger - TerminationRequest[[email protected][accountNumber=0951714636005,srNumber=20]",
/^(\d{2}:\d{2}:\d{2},\d{3}).*?(\d{2}\/\d{2}).*?\[accountNumber=(\d*?),srNumber=(\d*?)\]/)
मुझे इस कोड को चलाने मैं निम्नलिखित है, जो है क्या उम्मीद है जब स्पष्ट रूप से उत्पादन के मूल्य में लौटने वापस मिलता है।
00:00:13,207|06/18|0951714636005|20
हालांकि, अगर मैं निम्नलिखित करने के लिए LineMatcher बदल सकते हैं और स्पष्ट रूप से नहीं लौटते उत्पादन:
class LineMatcher
class << self
def match(line, regex)
output = ""
line.scan(regex).each do |matched|
output << matched.join("|") << "\n"
end
end
end
end
तो मैं निम्नलिखित परिणाम प्राप्त:
00:00:13,207
06/18
0951714636005
20
जाहिर है, यह नहीं है वांछित परिणाम। ऐसा लगता है कि मुझे आउटपुट वैरिएबल से छुटकारा पाने में सक्षम होना चाहिए, लेकिन यह अस्पष्ट है कि रिटर्न वैल्यू कहां से आ रहा है। इसके अलावा, पठनीयता के लिए कोई अन्य सुझाव/सुधार स्वागत है।
सही प्रारूपण – csamuel