English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

范围(Range)Ruby

La portée (Range) est partout : a à z, 0 à 9、等等。Ruby prend en charge les portées et nous permet d'utiliser les portées de différentes manières :

  • comme séquence de portée

  • portée utilisée comme condition

  • Plage d'intervalle

comme séquence de portée

La première et la plus courante utilisation de la portée est l'expression de séquence. Une séquence a un point de départ, un point d'arrivée et une manière de générer des valeurs continues dans la séquence.

Ruby utilise ''..'' et ''...'' Les opérateurs de portée créent ces séquences. La forme à deux points crée une portée contenant la valeur maximale spécifiée, et la forme à trois points crée une portée ne contenant pas la valeur maximale spécifiée.

(1..5)        #==> 1, 2, 3, 4, 5
(1...5)       #==> 1, 2, 3, 4
('a'..'d')    #==> 'a', 'b', 'c', 'd'

séquence 1..100 est une Range l'objet, qui contient deux Fixnum l'objet de référence. Si nécessaire, vous pouvez utiliser to_a La méthode convertit la portée en liste. Essayez l'exemple suivant :

Exemple en ligne

#!/usr/bin/ruby
 
$, =", "   # Séparateur de valeurs d'array
range1 =1..10).to_a
range2 = ('bar'..'bat').to_a
 
puts "#{range1"
puts "#{range2"

Résultat de l'exécution de l'exemple ci-dessus :

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
["bar", "bas", "bat"]

La portée implémente des méthodes vous permettant de parcourir leur contenu :

Exemple en ligne

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
# Définir la portée
digits = 0..9
 
puts digits.include? (5)
ret = digits.min
puts "la valeur minimale est #{ret}"
 
ret = digits.max
puts "la valeur maximale est #{ret}"
 
ret = digits.reject { |i| i < 5 }
puts "les éléments qui ne correspondent pas à la condition sont #{ret}"
 
digits.each do |digit|
   puts "dans une boucle #{digit}"
end

Résultat de l'exécution de l'exemple ci-dessus :

true
la valeur minimale est 0
la valeur maximale est 9
les éléments qui ne correspondent pas à la condition sont [5, 6, 7, 8, 9]
dans une boucle 0
dans une boucle 1
dans une boucle 2
dans une boucle 3
dans une boucle 4
dans une boucle 5
dans une boucle 6
dans une boucle 7
dans une boucle 8
dans une boucle 9

portée utilisée comme condition

La portée peut également être utilisée comme expression conditionnelle. Par exemple, le fragment de code suivant imprime les lignes de l'entrée standard, où la première ligne de chaque ensemble contient le mot start,la dernière ligne contient le mot end.:

while gets
   print if /start/../end/
end

La portée peut être utilisée dans les instructions case :

Exemple en ligne

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
score = 70
 
result = case score
when 0..40
    "Mauvaise note"
when 41..60
    "Presque passable"
when 61..70
    "Note de passage"
when 71..100
       "Bon score"
else
    "Note incorrecte"
end
 
puts result

Résultat de l'exécution de l'exemple ci-dessus :

Note de passage

Plage d'intervalle

L'utilisation finale de la plage est la détection d'intervalle : vérifiez si une valeur spécifiée se trouve dans une plage spécifiée. Vous devez utiliser l'opérateur d'égalité === pour effectuer le calcul.

Exemple en ligne

#!/usr/bin/ruby
# -*- coding: UTF-8 -*-
 
if (1..10) ==== 5)
  puts ""5 dans (1..10)"
end
 
if "('a'..'j') === 'c'"
  puts "c dans ('a'..'j')"
end
 
if "('a'..'j') === 'z'"
  puts "z dans ('a'..'j')"
end

Résultat de l'exécution de l'exemple ci-dessus :

5 dans (1..10)
c dans ('a'..'j')