In Python gibt es ein pass
Schlüsselwort zum Definieren einer leeren Funktion, Bedingung, Schleife, ... Gibt es etwas ähnliches für Ruby?Äquivalent von "pass" in Ruby
Python Beispiel:
def some_function():
# do nothing
pass
In Python gibt es ein pass
Schlüsselwort zum Definieren einer leeren Funktion, Bedingung, Schleife, ... Gibt es etwas ähnliches für Ruby?Äquivalent von "pass" in Ruby
Python Beispiel:
def some_function():
# do nothing
pass
Sie haben immer end
Aussagen, so wird pass
nicht benötigt.
Ruby-Beispiel:
def some_function()
# do nothing
end
Nein, es gibt nicht so etwas in Ruby. Wenn Sie einen leeren Block wollen, Verfahren, Modul, Klasse usw., schreiben Sie einfach einen leeren Block:
def some_method
end
Das ist es.
In Python, jeder Block ist erforderlich mindestens eine Aussage darüber zu enthalten, das ist, warum Sie eine "fake" brauchen no-op-Anweisung. Ruby hat keine haben Anweisungen, es hat nur Ausdrücke, und es ist völlig legal für einen Block, null Ausdrücke zu enthalten.
Wenn Sie in der Lage sein wollen, dass es mit einer beliebigen Anzahl von Argumenten frei zu nutzen, müssen Sie sich auf die Argumente einen kleinen Trick haben:
def gobble *args, ≺ end
Einzeiliger Funktionen und Klassen
def name ; end
class Name ; end
funktioniert gut für pseudocode.
Wie beantwortet, bevor alles in Ruby ist ein Ausdruck so ist es in Ordnung es leer zu verlassen.
def name
end
class Name
end
Rubin Alternative für Python-Programmierer, die den Pass Stichwort Liebe
def pass
end
# OR
def pass; end
Beachten Sie, dass es sinnlos ist, diese in Ruby zu tun, da es leer Methoden erlaubt, aber wenn Sie sind so scharf auf pass
, dies ist die einfachste und sauberste Alternative.
und jetzt können Sie diese Funktion in jedem Block verwenden und es wird die gleiche Arbeit.
def name
pass
end
# OR
class Name
pass
end
Denken Sie daran, dass Pass eine Funktion ist, die zurückkehrt, also liegt es an Ihnen, wie Sie es verwenden können.
nil
ist wahrscheinlich das Äquivalent davon:
def some_function
nil
end
Eine Möglichkeit, dass es im Grunde hilfreich ist, wenn Rettung etwas, aber nichts dagegen zu tun:
Process.kill('CONT', pid) rescue nil
Statt
begin
Process.kill('CONT')
rescue
end
tun
Und dies würde Syntaxfehler verursachen:
> throw :x rescue
SyntaxError: (irb):19: syntax error, unexpected end-of-input
from /usr/bin/irb:11:in `<main>'
Hinweise:
def some_function; end; some_function
würde noch Rückkehrnil
.
def a; :b; begin; throw :x; rescue; end; end; a;
würde auch noch nil
zurückgeben.
Wie andere bereits gesagt haben, können Sie in Ruby einfach einen Methodenkörper leer lassen. Dies könnte jedoch etwas anders sein als das, was Python mit pass
erreicht.
In Ruby ist alles ein Objekt. Die Abwesenheit von Wert, die einige Programmiersprachen mit null
oder nil
anzeigen, ist eigentlich ein Objekt von in Ruby.
Betrachten Sie das folgende Beispiel (in irb
):
class A
def no_op
end
end
A.new.no_op
# => nil
A.new.no_op.class
# => NilClass
A.new.no_op.nil?
# => true
Hier ist Rubys NilClass documentation Referenz.
Ich glaube, Python pass
wird hauptsächlich verwendet, um die syntaktischen Einschränkungen der Sprache (Einrückung) zu überwinden, obwohl ich nicht so in Python erfahren bin.
Dies ist die Lösung. Gute Arbeit. Ich suchte nach einem? : Weg, nichts zu tun: 'x == wahr? y = false: # Nichts tun, wenn "falsch" zu "x == wahr" wurde? y = false: nil' was perfekt funktioniert! – DeeJayh
Gibt es einen Grund, warum du nicht einfach 'y = false wenn x' machen kannst? – pixatlazaki