Fünf Ruby Hello World-Grüße

  • Brian Fox
  • 0
  • 3561
  • 129

Beispiele dafür, wie man viele einfache Programme schreibt, die praktisch nicht sinnvoll sind, verunreinigen das Internet, damit jeder sie finden kann. Zu den häufigsten gehören:

  • ein Fibonacci-Zahlenrechner, weil er das kanonische Beispiel für die Rekursion ist.
  • Ein FizzBuzz-Löser, weil er zu einem kanonischen Beispiel für eine einfache Codierungsfrage für ein Vorstellungsgespräch geworden ist.
  • ein Hello World-Begrüßer, da dies das kanonische Beispiel für die Einführung einer Sprache ist.

Während das Erlernen einer neuen Programmiersprache in jeder Tiefe viele Diskussionen über syntaktische Formen, semantisches Design und "Best Practices" erfordert, ergibt es für den Schüler normalerweise keinen Sinn, bis er oder sie einige Beispiele von Quellen sieht Code. Hier kommt das Hello World-Programm ins Spiel: Es ist normalerweise das erste Codebeispiel, das einem vollständigen Anfänger präsentiert wird, um ein möglichst einfaches Beispiel für die tatsächliche Verwendung der Sprache zu geben. Es folgen komplexere Beispiele, die häufig das Hinzufügen von mehr Komplexität und Funktionalität zum Hello World-Programm beinhalten, bis es als Nachfolger dieses ersten Programms fast nicht mehr wiederzuerkennen ist.

Es ist leicht, die Hello World als ein bedeutungsloses Spielzeug abzutun, aber es dient einem wichtigen Zweck, den erfahrene Entwickler später in ihrer Karriere vielleicht vergessen: Mit ein wenig Kreativität können solche Programme einigen sogar die Flexibilität und die einzigartigen Eigenschaften der Sprache demonstrieren kleines Ausmaß. Für diejenigen unter Ihnen, die Ruby noch nie verwendet haben, können die folgenden Hello World-Beispiele in der Programmiersprache Ruby diesen Zweck erfüllen. Jedes Beispiel enthält eine Standard-Shebang-Zeile, die dem Betriebssystem mitteilt, wo der Ruby-Interpreter auf einem Unix-System zu finden ist.

1. Das einfache Beispiel

#! / usr / bin / env ruby 

setzt "Hallo, Welt!"

Das ist nicht viel. Es besteht aus insgesamt zwei Spielmarken - der setzt Methode und ein String-Datum. Ähnliche Sprachen wie Perl und Python würden verwenden drucken stattdessen. Zum Beispiel könnte dasselbe Programm in Perl so aussehen:

#! / usr / bin / env perl 

print "Hallo Welt! \ n";

Die doppelten Anführungszeichen und \ n Zeilenumbruchzeichen sind hier erforderlich, wenn Sie am Ende der Programmausgabe einen Zeilenumbruch wünschen. Ruby hat eine drucken Methode, die sich genauso verhält, aber auch bietet setzt, Dadurch wird das Zeilenumbruchzeichen bequem am Ende der Ausgabe eingefügt, ohne dass Sie danach gefragt werden müssen.

2. Das Eingabebeispiel

#! / usr / bin / env ruby 

Setzt "Hallo, # ARGV [0]!"

In diesem Fall verwenden wir doppelte Anführungszeichen für eine interpolierte Zeichenfolge, d. H. Eine Zeichenfolge, die tatsächlich auf ausführbaren Code und Sonderzeichen analysiert wird, die vom Ruby-Interpreter nicht wörtlich genommen werden sollten. Code, der ausgewertet werden soll, bevor die Zeichenfolge in Anführungszeichen an übergeben wird setzt Methode kann eingewickelt werden # . In diesem Fall wollen wir das ARGV Array, in dem Ruby Eingaben über die Befehlszeile speichert, um uns das erste Element zu geben. Da Ruby beginnt, Array-Elemente bei Null zu zählen, müssen wir dies tun ARGV [0] ausgewertet.

Wenn Sie dieses Programm benennen hallo.rb und füttere es Welt Als Befehlszeilenargument beim Ausführen des Programms wird in der Ausgabe angezeigt Hallo Welt!:

> ./hello.rb Welt 

Hallo Welt!

3. Das Array-Beispiel

#! / usr / bin / env ruby 

greeting = ['Hallo', ARGV [0]]

Setzt greeting.join (',') + '!'

Hier erstellen wir zunächst ein Array mit zwei Elementen und geben seinem zweiten Element den Wert des ersten Elements des ARGV Array, damit der Benutzer wie im vorherigen Beispiel das Ziel einer Begrüßung angeben kann. Als nächstes die Beitreten Methode wird an die übergeben Gruß Array-Objekt, das es auffordert, seine Elemente mit einem Komma zu verbinden, gefolgt von einem einzelnen Leerzeichen zwischen zwei Elementen. Schließlich wird ein Ausrufezeichen (in diesem Zusammenhang verkettet) an das Ende der Zeichenfolge vor dem angehängt setzt Methode fügt schließlich eine neue Zeile an das Ende und sendet die gesamte Zeichenfolge an die Standardausgabe.

Wenn wir dieses Programm an einem Montag mit einer langen, frustrierenden Arbeitswoche durchführen, fühlen wir uns möglicherweise weniger gemeinnützig als in den vorherigen Beispielen und nennen die Welt etwas weniger freundlich:

> ./hello.rb 'grausame Welt' 

Hallo, grausame Welt!

Diese Version verwendet etwas unnötige Komplexität, um genau die gleichen Effekte wie das vorherige Beispiel zu erzielen, aber diese Komplexität zeigt uns einige Dinge:

  • Es zeigt einige der praktischen Textverarbeitungsfunktionen von Ruby, darunter zwei Möglichkeiten, separate Zeichenfolgen zu einer größeren Zeichenfolge zusammenzufügen.
  • Es beginnt, das objektorientierte Design von Ruby zu zeigen.

Leute, die sich mit objektorientierter Programmierung aus der Arbeit mit anderen Sprachen auskennen, sehen sich möglicherweise einen Großteil des Codes vor diesem Beispiel an und fragen sich, warum alles in Ruby prozedural aussieht, wenn es den Ruf einer objektorientierten Sprache hat. Zuvor konnte man nicht einfach daran erkennen, dass Objekte und Methoden den Ruby-Quellcode für ein Hello World-Programm befallen haben. Es stellt sich heraus, dass setzt ist eine Methode der Kernel Klasse und Strings sind Objektinstanzen des String Klasse. Array Objekte kommen mit einem Beitreten Methode, und während es aussieht wie ein prozeduraler Infix-Operator, + wird hier tatsächlich als String Objekt Methode. Tatsächlich kann die letzte Zeile dieser Version des Hello World-Programms so geschrieben werden, dass diese Methoden für das, was sie sind, expliziter dargestellt werden:

Kernel.puts (greeting.join (','). + ('!')) 

Gott sei Dank für syntaktischen Zucker; Die Version, die nicht so viele Klammern verwendet, benennt die nicht explizit Kernel Klasse, und verwendet nicht so viel Punktnotation für Methoden war ein bisschen leichter für die Augen.

4. Das benutzerdefinierte Methodenbeispiel

#! / usr / bin / env ruby 

def greet (Ziel)

return "Hallo, # target!"

Ende

grüßt (ARGV [0])

Mit einer weiteren unnötigen Komplexität haben wir diesmal den Zeichenfolgenerstellungsprozess vom Ausgabeprozess getrennt, indem wir eine aufgerufene Methode erstellt haben grüßen. Durch das Erstellen der grüßen Methode, ohne sie explizit in eine Klassendefinition aufzunehmen, haben wir sie der hinzugefügt Kernel Klasse. Wie bei setzt, Die Klasse, zu der die Methode gehört, muss nicht angegeben werden. In der Tat, weil grüßen ist ein Privatgelände Methode von Kernel, es kann nicht so aufgerufen werden:

Kernel.puts Kernel.greet (ARGV [0]) 

Eigentlich ist es können In irb (dem interaktiven Ruby-Interpreter), aber mit ausführbaren Standarddateien, funktioniert dies nicht.

Selbst wenn wir eine Methode erstellen, tun wir wieder etwas, das leicht mit der Verwendung eines anderen Programmierparadigmas als der objektorientierten Programmierung verwechselt werden könnte. In diesem Fall sieht es nach funktionaler Programmierung aus, bei der wir eine "Funktion" definiert haben, die genau eine Eingabe nimmt, genau eine Ausgabe erzeugt und keine Nebenwirkungen hat. Diese "Funktion" wird dann verwendet, um ihre Ausgabe als Eingabe für eine andere "Funktion" bereitzustellen, die setzt Methode. Nur weil wir wissen, dass diese beiden vermeintlichen Funktionen tatsächlich Methoden der Kernel Klasse, von der wir wissen, dass dies eine rein objektorientierte Übung ist.

Wenn Sie Code in einem funktionalen Stil entwickeln möchten, können Sie einfach ignorieren, was sich hinter den Kulissen abspielt, und Ihren Code so schreiben, dass er den Eindruck erweckt, er sei rein funktional und überhaupt nicht objektorientiert.

5. Das benutzerdefinierte Klassenbeispiel

#! / usr / bin / env ruby 

Klasse Greeter

def initialisieren (Gruß)

@greeting = Begrüßung

Ende

auf jeden Fall grüßen (Betreff)

setzt "# @ greeting, # subject!"

Ende

Ende

hail = Greeter.new ('Gut getroffen')

hail.greet (ARGV [0])

Abschied = Greeter.new ('Auf Wiedersehen')

farewell.greet (ARGV [1])

Schließlich kommen wir ein wenig in die Mitte der objektorientierten Programmierung. EIN Grüße Klasse ist definiert, und seine initialisieren Methode (die automatisch ein Alias ​​für Neu) verwendet ein Argument für den Begrüßungstyp, den eine Instanz dieser Klasse verwenden soll. Eine andere Methode, grüßen, nimmt auch ein einzelnes Argument - das Thema oder Ziel Ihrer Begrüßung.

Zwei separate Objekte dieser Klasse werden mit dem instanziiert Neu Methode, von denen jede bei der Erstellung einem eigenen Label zugewiesen wird: Hagel und Abschied. Jedes Objekt erhält dann den grüßen Nachricht mit dem ersten und zweiten Element der ARGV Array, sodass die Person, die das Programm über die Befehlszeile ausführt, angeben kann, wer die einzelnen Begrüßungen erhalten soll.

Nehmen wir an, dass die Person, die das Programm leitet, an einem Freitagmorgen glücklich und optimistisch aufsteht und sich auf einen schnellen und reibungslosen Arbeitstag freut, auf den ein langes Wochenende folgt (Montag wird ein Feiertag für diesen Benutzer sein). Als solches, wenn der Benutzer Hallo sagt, ist es mit einem Lächeln und einem freundlichen Blick für die Welt. Am Ende des Tages wurde jedoch die gesamte Abteilung dieses Benutzers entlassen. Um das Ganze abzurunden, hat unser unglücklicher Nutzer gerade ein neues, teures Haus gekauft, das er sich ohne diesen Job einfach nicht leisten kann, und die Wirtschaft steckt in der Toilette. Als solcher hat er einen sehr emo Moment, wenn es Zeit ist, gute Nacht zu sagen.

In Anbetracht einer solchen Wende zu seiner Zeit wird das Programm mit einem Rechtschreibfehler ausgeführt, der mit Ängsten bei Teenagern behaftet ist:

> ./hello.rb 'fine world "crule world' 

Gut getroffen, schöne Welt!

Auf Wiedersehen, Crule World!

Wenn Sie ein Experte Rubyist werden, werden Sie hoffentlich nie das Problem haben, so plötzlich entlassen zu werden. Ich hoffe auch, dass diese kurze Einführung in Ruby Ihnen einen Eindruck von der Klarheit und Flexibilität der Sprache vermittelt.




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

Tipps, nützliche Informationen und Neuigkeiten aus der Welt der Technik!
Nützliche Informationen und die neuesten technologischen Nachrichten aus der ganzen Welt. Videoüberprüfungen von Handys, Tablets und Computern.