En apprenant Ruby, j'ai remarqué que dans tous les exemples, il n'y a pas de point-virgule. Je suis conscient que cela est parfaitement bien tant que chaque déclaration est sur sa propre ligne. Mais ce que je me demande, c'est peut vous utilisez des points-virgules dans Ruby?
Oui.
Ruby ne nous oblige à utiliser aucun caractère pour séparer les commandes, sauf si nous voulons enchaîner plusieurs instructions sur une seule ligne. Dans ce cas, un point-virgule (;) est utilisé comme séparateur.
Source: http://articles.sitepoint.com/article/learn-Ruby-on-Rails/2
En remarque, il est utile d'utiliser des points-virgules dans votre session (j) irb pour éviter d'imprimer une valeur d'expression ridiculement longue, par ex.
irb[0]> x = (1..1000000000).to_a
[printout out the whole array]
contre
irb[0]> x = (1..100000000).to_a; nil
Sympa surtout pour vos appels MyBigORMObject.find_all.
Point-virgule: oui.
irb(main):018:0> x = 1; c = 0
=> 0
irb(main):019:0> x
=> 1
irb(main):020:0> c
=> 0
Vous pouvez même exécuter plusieurs commandes séparées par des points-virgules dans une boucle à une ligne
irb(main):021:0> (c += x; x += 1) while x < 10
=> nil
irb(main):022:0> x
=> 10
irb(main):023:0> c
=> 45
La seule situation que j'ai rencontrée selon laquelle les points-virgules sont utiles est lors de la déclaration des méthodes d'alias pour attr_reader.
Considérez le code suivant:
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
En utilisant des points-virgules, nous pouvons réduire cela de 3 lignes:
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
Pour moi, cela n'enlève pas vraiment la lisibilité.
Oui, les points-virgules peuvent être utilisés comme séparateurs d'instructions dans Ruby.
Bien que mon style typique (et la plupart code que je vois) mette une ligne de code sur chaque ligne, l'utilisation de ;
est assez inutile.
Il peut être intéressant d'utiliser des points-virgules pour conserver la syntaxe du bloc comme dans cet exemple:
a = [2, 3 , 1, 2, 3].reduce(Hash.new(0)) { |h, num| h[num] += 1; h }
Vous conservez une ligne de code.