Ich baue einen Rechner mit Polnisch/Präfix-Notation und ich stoße auf ein eigenartiges Problem. Wenn das Programm einen Subtraktionsoperator trifft, wird undefined method '-' for Fixnum (NoMethodError)
ausgelöst. Dies geschieht nur mit -
; Addition, Multiplikation und Division funktionieren alle gut. Was noch seltsamer ist, ist, dass, wenn ich send
mit in Irb manuell aufrufen, der Fehler nicht auftritt. Der Fehler tritt nur auf, wenn ich mein Programm ausführe.Problem mit senden mit '-' Subtraktion in Ruby durchzuführen
def calc(exp)
exp = exp.split(" ")
operands = []
exp.reverse.each do |str|
if is_operator?(str)
op1 = operands.pop
op2 = operands.pop
str = str.to_sym
result = op1.send str, op2
operands.push(result)
else
operands.push(str.to_i)
end
end
operands.pop
end
def is_operator?(char)
char.to_i.to_s != char
end
exp = "− */15 − 7 + 1 1 3 + 2 + 1 1"
calc(exp)
test.rb:13:in `block in calc': undefined method `−' for 7:Fixnum (NoMethodError)
Können Sie Ihre 'is_operator?' Methode posten? Einige Input/Output-Fälle wären ebenfalls hilfreich. Siehe [Wie stelle ich eine gute Frage?] (Http://stackoverflow.com/help/how-to-ask) und [Wie erstelle ich ein minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com)/help/mcve) –
Bitte lassen Sie uns auch den Aufruf Ihrer Funktion sehen (mit welcher "exp" Sie testen). Wir müssen in der Lage sein, Ihr Problem zu reproduzieren, um Ihnen zu antworten. Ihr Code funktioniert gut für mich für 'calc (" - 2 1 ")'. – Amadan
Danke, @JustinHellreich und @Amadan. 'Is_operator?' Hinzugefügt und der Fall, in dem es fehlschlägt. – charleszardo