Ruby: divisible par 4

Cela fonctionne bien, mais je veux le rendre plus joli - et accueillir toutes les valeurs qui sont divisibles par 4:

if i==4 || i==8 || i==12 || i==16 || i==20 || i==24 || i==28 || i==32
  # ...
end

Une méthode intelligente et courte pour le faire?

27
demandé sur Stefan 2012-01-11 14:43:35

3 réponses

Essayez ceci:

if i % 4 == 0

C'est ce qu'on appelle le "opérateur modulo".

122
répondu Sergio Tulentsev 2012-01-11 10:48:05

Il y a aussi modulo, ce qui vous permet de faire

420.modulo(4).zero?

Rien ne vous empêche de faire ça avec %, mais ça a l'air bizarre:

420.%(4).zero?
47
répondu Andrew Grimm 2012-01-11 10:52:00

C'est toujours un bon démarreur de conversation:

if (i & 3).zero?
6
répondu Matt 2014-11-05 05:03:38