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?
75
Antworten:
Ja.
Quelle: http://articles.sitepoint.com/article/learn-ruby-on-rails/2
quelle
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.
quelle
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
quelle
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.quelle
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.
quelle
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.
quelle