Das Ganze ist ein großes Durcheinander von Ruby, die drastisch nach und nach vereinfacht werden können. Der Schlüssel hier ist, den Ruby-Weg auf Dinge anzuwenden und elegante Lösungen werden sofort offensichtlich.
Betrachten Sie diese unordentliche while
Schleife mit einer tatsächlichen loop
Struktur ersetzen. Auch die Elemente Namen aus dem split
resultierende auf der Grundlage ihrer Bedeutung für Sie:
loop do
puts "Please enter two digits separated by operation you would like to calculate:"
left, operator, right = gets.chomp.split(' ')
result = case (operator)
when '+'
left.to_i + right.to_i
when '-'
left.to_i - right.to_i
when '*'
left.to_i * right.to_i
when '/'
left.to_i/right.to_i
end
puts result
end
Nun ist diese wie eine Menge Wiederholung sieht, das einzige, was zu ändern ist hier der Betreiber. Da Ruby eine sehr dynamische Sprache ist, können wir dies tatsächlich kollabieren einige mehr:
loop do
puts "Please enter two digits separated by operation you would like to calculate:"
left, operator, right = gets.chomp.split(' ')
result = case (operator)
when '+', '-', '*', '/'
left.to_i.send(operator, right.to_i)
end
puts result
end
Jetzt hier noch einige Überschneidungen gibt. Was zu versuchen, diese weiter zu verringern und auch für mehr Flexibilität ermöglichen:
loop do
puts "Please enter digits separated by the operations you would like to calculate:"
values = gets.chomp.split(' ')
while (values.length > 2)
left = values.shift.to_i
operator = values.shift
right = values.shift.to_i
values.unshift(left.send(operator, right))
end
puts values[0]
end
Das bedeutet, dass Sie beliebig lange Listen von Zahlen haben können zusammen zu fügen. Es ist nicht viel schwieriger, diese Zeichenfolge in Zahlen und Nicht-Zahlen-Komponenten zu zerlegen, aber das ist etwas, das Sie selbst ausprobieren können.
'Eingabe' wird nie' nil' sein, es ist immer ein Array. Beachten Sie, dass in Ruby 'x! = Nil' wirklich viel zu viel Chaos ist und 99% der Zeit' while x' ausreichen. Die einzigen logisch falschen Dinge sind 'false' und' nil'. Leeres Array, leere Zeichenkette, 0 usw. Sie sind alle wahrheitsgemäß. – tadman