Ben Ruby için biraz yeni ve çok sezgisel bir dil olmasına rağmen örtük dönüş değerlerinin nasıl davrandığını anlamakta zorluk çekiyorum.Ruby'de gizli dönüş değerleri
Tomcat günlüklerini greplemek ve ilgili verilerden boruya ayrılmış CSV dosyaları oluşturmak için küçük bir program üzerinde çalışıyorum. İşte bir günlük girişinden satırları oluşturmak için kullanıyorum basitleştirilmiş bir örnek. Bu kodu çalıştırdığınızda
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*?)\]/)
Ben açıkça output değerini döndürürken beklenen budur aşağıdakileri, geri gel. Ben şu şekilde LineMatcher değiştirip açıkça dönmemesi halinde
00:00:13,207|06/18|0951714636005|20
Ancak çıkışı: Sonra
class LineMatcher
class << self
def match(line, regex)
output = ""
line.scan(regex).each do |matched|
output << matched.join("|") << "\n"
end
end
end
end
ben şu sonucu alırsınız: Açıkçası
00:00:13,207
06/18
0951714636005
20
bu değil istenen sonuç. Çıkış değişkeninden kurtulmam gerektiği gibi geliyor, ancak dönüş değerinin nereden geldiği belli değil. Ayrıca, okunabilirlik için diğer öneriler/geliştirmeler memnuniyetle karşılıyor.
Düzeltilmiş biçimlendirme – csamuel