Ich habe eine einfache Methode, die durch ein Array iteriert und ein Duplikat zurückgibt. (Oder Duplikate)Wie konvertiert man eine dreizeilige Ruby-Methode in eine
def find_dup(array)
duplicate = 0
array.each { |element| duplicate = element if array.count(element) > 1}
duplicate
end
Es funktioniert, aber ich möchte diese elegant mehr auszudrücken.
Der Grund ist es drei Linien ist, dass die Variable „Duplikat“, die die Methode muss, kehren nicht sichtbar für das Verfahren ist, wenn ich es innerhalb des Blocks einführen, dh
def find_dup(array)
array.each { |element| duplicate = element if array.count(element) > 1}
duplicate
end
Ich habe habe ein paar Möglichkeiten ausprobiert, um "duplicate" als Ergebnis eines Blocks zu definieren, aber ohne Erfolg.
Irgendwelche Gedanken?
Sind Sie versuchen, eine einzelne Kopie oder das letzte Duplikat oder ein Array von Dubletten zu finden? Außerdem durchläuft Ihr aktueller Code alle Elemente im Array zweimal in verschachtelter Weise und setzt das Duplikat auf das zuletzt gefundene Duplikat zurück. –