2016-04-16 3 views
1
class Fixnum 
def previous 
    return self-1 
end 
end 

return 6.previous 

Wenn ich dieses Programms bin Ausführung Ich erhalte die folgenden Fehler jdoodle.rb: 8: in ` ': unerwartete Rückkehr (LocalJumpError). Ich verwende einen Online-Compiler für das Programm. Gibt es einen Fehler im Code?Ruby-Klasse und Funktion

Antwort

2

Sie versuchen, return, aber Sie sind nicht innerhalb einer Methode, so Ruby weiß nicht, wo Sie voraussichtlich zurückkehren (oder "springen"). Vielleicht möchten Sie Anzeige das Ergebnis:

puts 6.previous 

Im Allgemeinen Sie LocalJumpError ein sehen werden, wenn Sie yield oder return an einem Ort versuchen, wo es keinen Sinn macht (dh wenn kein Block zu yield zu oder Methode zu return von).

+1

Nur für den Fall, dass es Verwirrung gibt, bezieht sich nur auf Ihre zweite "Rückkehr" Aussage. Der erste ist in Ordnung, aber Sie würden normalerweise nur die letzte Zeile Ihrer Methode 'self - 1' schreiben. Das liegt daran, dass Methoden den letzten berechneten Wert zurückgeben, wenn keine weiteren Anweisungen mehr ausgeführt werden. –