English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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
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 :
#!/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 :
#!/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
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 :
#!/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
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.
#!/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')