Können Sie in Ruby Semikolons verwenden?


75

Beim Erlernen von Ruby habe ich festgestellt, dass in allen Beispielen keine Semikolons vorhanden sind. Mir ist bewusst, dass dies vollkommen in Ordnung ist, solange jede Aussage in einer eigenen Zeile steht. Aber ich frage mich, können Sie in Ruby Semikolons verwenden?


Und zu den Ruby-Leuten da draußen: Sollte man Semikolons verwenden? Gibt es einen Vorteil dabei? Ich weiß, dass ich beim Schreiben von Ruby-Code diese reflexartig hinzufüge.
Andy Lester

@Andy Verwenden Sie keine Semikolons, es sei denn, Sie möchten mehrere Anweisungen in eine Zeile setzen, was Sie sowieso vermeiden sollten .
Yaser Sulaiman

@ Yaser: Ich brauche Semikolons. Denn wenn es eine Funktion in einer Zeile ohne Semikolon gibt, vim Autoindents für mich, die ich nicht möchte.
Mark Szymanski

Vielleicht möchten Sie eine Frage dazu stellen, denn es gibt ein paar Leute, die Vim mit Rubin verwenden.
Andrew Grimm

Der Link im Kommentar von @YaserSulaiman gibt das Argument an, dass Semikolons Code weniger lesbar und hässlich machen. Es ist eine gültige Meinung, aber es ist eine Meinung.
Tony

Antworten:



37

Als Randnotiz ist es nützlich, Semikolons in Ihrer (j) irb-Sitzung zu verwenden, um zu vermeiden, dass ein lächerlich langer Ausdruckswert ausgedruckt wird, z

irb[0]> x = (1..1000000000).to_a
[printout out the whole array]

vs.

irb[0]> x = (1..100000000).to_a; nil

Besonders schön für Ihre MyBigORMObject.find_all-Aufrufe.


6

Semikolon: ja.

irb(main):018:0> x = 1; c = 0
=> 0
irb(main):019:0> x
=> 1
irb(main):020:0> c
=> 0

Sie können sogar mehrere durch Semikolons getrennte Befehle in einer einzeiligen Schleife ausführen

irb(main):021:0> (c += x; x += 1) while x < 10
=> nil
irb(main):022:0> x
=> 10
irb(main):023:0> c
=> 45

3

Ja, Semikolons können in Ruby als Anweisungstrennzeichen verwendet werden.

Obwohl mein typischer Stil (und der meiste Code, den ich sehe) eine Codezeile in jede Zeile einfügt, ist die Verwendung von ;ziemlich unnötig.


3

Die einzige Situation, auf die ich gestoßen bin, dass Semikolons nützlich sind, ist das Deklarieren von Alias-Methoden für attr_reader.

Betrachten Sie den folgenden Code:

attr_reader :property1_enabled
attr_reader :property2_enabled
attr_reader :property3_enabled

alias_method :property1_enabled?, :property1_enabled
alias_method :property2_enabled?, :property2_enabled
alias_method :property3_enabled?, :property3_enabled

Durch die Verwendung von Semikolons können wir dies um 3 Zeilen reduzieren:

attr_reader :property1_enabled; alias_method :property1_enabled?, :property1_enabled
attr_reader :property2_enabled; alias_method :property2_enabled?, :property2_enabled
attr_reader :property3_enabled; alias_method :property3_enabled?, :property3_enabled

Für mich beeinträchtigt dies nicht wirklich die Lesbarkeit.


1

Es kann interessant sein, Semikolons zu verwenden, um die Blocksyntax wie in diesem Beispiel beizubehalten:

a = [2, 3 , 1, 2, 3].reduce(Hash.new(0)) { |h, num| h[num] += 1; h }

Sie pflegen eine Codezeile.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.