Question

quoi vérifier un temps avec une déclaration de cas. Comment faire?

Était-ce utile?

La solution

Il suffit d'utiliser la version qui ne dispose pas d'une variable définie au sommet ...

t = event.time  # arbitrary example.

case
when t <= Time.now
  # Event is in the past.
else
  # Event is in the future.
end

Autres conseils

utiliser des plages:

case time
when (Time.now - 60)..(Time.now) then puts 'within the last minute'
when (Time.now - 3600)..(Time.now) then puts 'within the last hour'
end

Plages de travail avec toutes sortes de valeurs. Vous pouvez utiliser Dates aussi:

case date
when (Date.today - 1)..(Date.today) then puts 'less than a day ago'
when (Date.today - 30)..(Date.today) then puts 'less than a month ago'
end

Mise à jour: Ruby 1.9 cassé des plages de temps, de sorte que cet exemple ne fonctionne que dans Ruby 1.8.7. L'exemple Date fonctionne dans les deux versions cependant. En 1.9, vous pouvez utiliser ce code pour correspondre à un temps:

case time.to_i
when ((Time.now - 60).to_i)..(Time.now.to_i) then puts 'within the last minute'
when ((Time.now - 3600).to_i)..(Time.now.to_i) then puts 'within the last hour'
end
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top