Refactor-Methode, die ein Array von Strings zu einem Satz kombiniert [geschlossen] - Ruby, Arrays, Refactoring

Ich schreibe eine Methode, um ein Array vonStrings und ganze Zahlen zu einem Satz. Es muss den ersten Buchstaben groß schreiben, Leerzeichen zwischen den Wörtern hinzufügen und einen Punkt am Ende setzen. So habe ich es geschrieben:

def sentence_maker(y)
y[0].capitalize!
y[-1]="#{y[-1]}."
sentence = y.join(" ")
end

Hier ist ein Beispiel für ein Array, das übergeben werden würde:

["alaska", "has", "over", 586, "thousand", "miles"]

Was wäre ein Refaktor dieser Methode? Vielen Dank im Voraus für die Hilfe. Ruby 2.1.1p76

Antworten:

2 für die Antwort № 1

Warum nicht das ?:

words = ["alaska", "has", "over", 586, "thousand", "miles"]
words.join(" ").strip.capitalize << "." #=> "Alaska has over 586 thousand miles."

oder mit String-Interpolation:

"#{words.join(" ").strip.capitalize}." #=> "Alaska has over 586 thousand miles."

strip entfernt vorangestellte / nachfolgende Leerzeichen in der Zeichenfolge (falls im ersten oder letzten Arraywert Werte vorhanden sind).

AKTUALISIEREN: Sie können dies als Instanzmethode des Arrays umbrechen:

class Array
def to_sentence
"#{join(" ").strip.capitalize}."
end
end

words = ["alaska", "has", "over", 586, "thousand", "miles"]
words.to_sentence # => "Alaska has over 586 thousand miles."

1 für die Antwort № 2

Sie können Ihren Code sehr lesbar machen:

def sentence_maker(array)
array.first.capitalize!
array.last.concat(".")
array.join(" ")
end

Am beliebtesten