Warum kann nicht eine variable name endet mit`?`, während Sie den Namen einer Methode können?
Namen einer Methode kann am Ende mit einem Fragezeichen ?
def has_completed?
return count > 10
end
aber den Namen einer Variablen nicht.
Was ist der Grund? Ist es nicht praktisch, variable-name mit der Endung die gleiche Weise auch? Da wir in der Regel nicht sagen kann, ob foobar
ist eine Methode oder eine variable einfach durch einen Blick auf den Namen foobar
sowieso, warum die Ausnahme für die ?
Fall?
Und wie soll ich mit dieser arbeiten? Vielleicht immer has
oder is
im code?
if process_has_completed
...
end
if user_is_using_console
...
end
- Als Anmerkung: Durch übereinkommen, Präfixe wie
has_
oderis_
sind nicht wirklich beliebt in Ruby, daherdef completed?
wäre ein besseres Beispiel.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Würden Sie bitten, Matz, um eine verbindliche Antwort. Allerdings
finished?
würde bedeuten, einen speziellen Typ (boolean), das scheint etwas widersprüchlich zu mir.?
wir wahrscheinlich etwas anderes verwenden... und impliziert genauso. Mit?
ist nur eine bequeme symbol zu verwenden.?
und!
könnte man als Fragen und Aufträge zu einem Objekt. Das heißt nicht, dass sanse für Variablen.full_name
, es ist fast definitiv nicht um eine floating-point-Zahl. Im Gegensatz dazu, in typisierte Programmierung, es gibt tatsächlich mal bei einem Namen sollte nicht bedeutet eine Typ -- bei der Arbeit mit Generika. Der Empfänger Ding auch nicht halten, denn es ist gängige Praxis, um die Verwendung von get-und Set-Methoden zu behandeln-Methoden, als wären Sie Variablen in einen Rahmen oder block.Dies ist jetzt nur ein Gedanke, aber ich denke, dass Methoden mit Namen wie
empty?
vermuten, dass eine gewisse Art der Prüfung gemacht werden, im inneren und Objekt oder Klasse (je nach Kontext). Diese Prüfung oder Evaluierung bedeutet, dass eine Handlung getan werden muss. Insgesamt, da sind wir gefragt werden (und damit?
) Objekt zu einem Staat, bedeutet dies, gibt es eine Möglichkeit, dass Objekt-Zustand verändern könnte während des gesamten application lifecycle. Eine variable könnte sein veraltet, aber?
-Methode (Prüfung) erfolgt in den spezifischen moment, wodurch ein up-to-date Informationen über Zustand, der dargestellt werden konnte, die in einen boolean-form.So, ich würde gerne glauben, dass dies ist eine design-Einschränkung, zur Verfügung gestellt von der Architekt (Matz) zur Durchsetzung einer mehr logischen, close-to-real-life-coding-Ansatz.