Рубиновые контейнеры
В Ruby мы можем легко поместить определение метода внутри класса-контейнера, а затем создать новые объекты, отправив новое сообщение в этот класс, как и в большинстве языков сценариев. В Ruby есть встроенный модуль Enumerable , который включается классами Strings, Array, Hash, Range и другими, представляющими набор значений. В основном существует четыре типа контейнеров, которые представляют набор данных в Ruby:
- Строки. Строка представляет собой последовательность или набор из одного или нескольких символов.
- Массивы. Массивы представляют собой набор упорядоченных объектов с целочисленным индексом.
- Хэши: Хэши — это наборы уникальных пар <key, value>.
- Его часто называют ассоциативными массивами, картами или словарями.
- Это неупорядочено.
- Range s: диапазоны отображают набор значений между начальной и конечной точками. Значения могут быть диапазоном, символом, строкой или объектом.
Рубиновые струны:
Строки Ruby являются изменяемыми и создаются с использованием одинарных (' ') или двойных кавычек (" ") без упоминания типов данных.
Пример 1:
Ruby
# Ruby code implementation # for creation of Ruby Strings # using single quotes puts "Ruby String using single quotes in GFG!" # using double quotes puts "Ruby String using double quotes in GFG!" # storing string into variables str = "Ruby String using variable in GFG!" # displaying string puts str |
Выход:
Ruby String using single quotes in GFG! Ruby String using double quotes in GFG! Ruby String using a variable in GFG!
Двойные кавычки интерполируют переменные, тогда как одинарные кавычки не могут интерполировать.
Пример 2:
Ruby
# Ruby code implementation to # show single and double quotes str1 = "Hello Geeks!"str2 = "Hello GFG" # using single quotesputs "#{str1}" puts "#{str2}" puts "#{str1}" puts "#{str2}" |
Выход:
#{str1}
#{str2}
Hello Geeks!
Hello GFGДоступ осуществляется путем упоминания индекса внутри квадратной скобки[].
Пример 3:
Ruby
# Ruby code implementation # for accessing of Ruby Strings str = "GeeksforGeeks" # accessing the specified substring puts str["Geeks"] # print a single character from a # string using positive index puts str[2] # print a single character from a # string using negative index puts str[-2] # print string in a range using comma(,) puts str[4, 10] # print string in a range using(..) operator puts str[4 .. 8] |
Выход:
Geeks e k sforGeeks sforG
Чтобы узнать больше, обратитесь к статье Ruby Strings.
Рубиновые массивы:
Массив Ruby хранится в смежных ячейках памяти. Он упорядочен по позициям с целочисленным индексом. Одномерный массив можно создать с помощью нового метода класса (Array.new) или с помощью буквального конструктора []
Using new class method
Пример 4:
Ruby
# Ruby code implementation for creation of Ruby Arrays # using new method arr = Array.new(4, "GFG") puts arr.size # displaying array elements puts "#{arr}" |
Выход:
4 ["GFG", "GFG", "GFG", "GFG"]
Пример 5:
Ruby
# Ruby code implementation for creation of Ruby Strings# Using literal[] methodarr = Array["a", "b", "c", "d","e", "f"] # displaying array elementsputs "#{arr}" # displaying array sizeputs "Size of arr is: #{arr.size}" # displaying array lengthputs "Length of arr is: #{arr.length}" |
Выход:
["a", "b", "c", "d", "e", "f"] Size of arr is: 6 Length of arr is: 6
Мы можем получить один или несколько элементов, используя как положительные, так и отрицательные индексы:
Пример 6:
Ruby
# Ruby code implementation for accessing of Ruby Arrays str = ["GFG", "Geeks", "Ruby", "Containers"] # Accessing single array elements puts "Value at index 1: #{str[1]}" # using positive index puts "Value at index -1: #{str[-1]}" # using negative index # Accessing multiple array elements# using positive index rangeputs "Positive index range [1,2]: #{str[1,2]}" # using negative index rangeputs "Negative index range [-1,2]: #{str[-1,2]}" |
Выход:
Value at index 1: Geeks Value at index -1: Containers Positive index range [1,2]: ["Geeks", "Ruby"] Negative index range [-1,2]: ["Containers"]
Рубиновые хэши:
Рубиновые хэши — это набор уникальных ключей и их значений, а хеш можно создать с помощью literal[], Hash.new() или try_convert().
Пример 7:
Ruby
# Ruby code implementation for creation of Ruby Hashes# Using literal[] puts "Creation of Hashes using literal[]" p Hash["x", 30, "y", 19] p Hash["x" => 30, "y" => 19] # Using of new method puts "
Creation of Hashes using new" a = Hash.new("geeksforgeeks") p a["x"] = 40 p a["x"] p a["y"] puts "
Creation of Hashes using try_convert" # Using of try_convert method p Hash.try_convert({3=>8}) p Hash.try_convert("3=>8") |
Выход:
Creation of Hashes using literal[]
{"x"=>30, "y"=>19}
{"x"=>30, "y"=>19}
Creation of Hashes using new
40
40
"geeksforgeeks"
Creation of Hashes using try_convert
{3=>8}
nilМы можем извлекать элементы (значения) с помощью индекса (ключа), который может быть любым (целое число, символ и т. д.).
Пример 8:
Ruby
# Ruby code implementation for accessing of Ruby Hashes a = {"x" => 45, "y" => 67} p a["x"] |
Выход:
45
Значение по умолчанию для хэшей равно нулю. Чтобы узнать больше о Ruby Hashes, нажмите здесь.
Рубиновые диапазоны:
Он объявляется с помощью операторов диапазона «..» и «…».
- Оператор «..» включает все переменные в пределах диапазона, а также начальное и конечное значение.
- Оператор «..» включает все переменные в пределах диапазона, а также начальное значение, но не конечное значение.
Пример 9:
Ruby
#Ruby code to show ranges in Ruby# This will separate the values by comma ","$, =", " #This include 5 & 10r1 = (5..10).to_a #This include 5 but not 10r2 = (5...10).to_a #This include "asa" & "asd"r3 = ("asa".."asd").to_a #This include "asa" but not "asd"r4 = ("asa"..."asd").to_a puts "#{r1}"puts "#{r2}"puts "#{r3}"puts "#{r4}" |
Выход:
[5, 6, 7, 8, 9, 10] [5, 6, 7, 8, 9] ["asa", "asb", "asc", "asd"] ["asa", "asb", "asc"]
Мы можем использовать эти диапазоны как последовательности, условия и интервалы. Чтобы узнать больше о Ruby Ranges, нажмите здесь.
Блоки
Блок — это последовательность кода ruby, заключенная в do/end или фигурные скобки. Методы могут принимать неявный аргумент блока и вызывать код в этом блоке с помощью ключевого слова yield.
Пример 10:
Ruby
# Ruby code implementation for creation of Ruby Blocksdef two_times yield yieldendtwo_times {puts "GFG!"}; |
Выход:
GFG! GFG!
Блоки как замыкания:
Блоки могут принимать аргумент:
>> def times
yield("fir")
yield("sec")
end
=> nil
>> times {|n| puts "#{n}: yoo"}
GFG! Rocks
GFG! is the best
=> nilПример 11:
Ruby
# Ruby code implementation for creation of Ruby Blocks as Closures def times yield("Rocks") yield("is the best")endtimes {|ys| puts "GFG! #{ys}"} |
Выход:
GFG! Rocks GFG! is the best
Yield возвращает результат выполнения блока:
Пример 12:
Ruby
# Ruby code implementation for # creation of Ruby Blocks as Closures def gfg [yield("GEEKS"), yield("FOR"), yield("GEEKS")]endgfg {|geek| puts "#{geek.upcase.reverse}"} |
Выход:
SKEEG ROF SKEEG
Блок закрытия может быть определен в одной области видимости и может быть вызван в другой области видимости. Чтобы узнать больше о замыканиях в Ruby, нажмите здесь.
Больше применений блоков:
Блоки используются многими другими способами:
Пример 13:
Ruby
# Ruby code implementation for # Ruby Blocks using each method ["Geeks", "GFG", 55].each do |n| puts n end |
Выход:
Geeks GFG 55
По умолчанию:
Ruby
# Ruby code implementation for # Ruby Blocks using times method x = "NULL" 4.times do |x| puts "Value Inside the block: #{x}" end puts "Value Outside the block: #{x}" |
Выход:
Value Inside the block: 0 Value Inside the block: 1 Value Inside the block: 2 Value Inside the block: 3 Value Outside the block: NULL
Чтобы узнать больше о Ruby Blocks, нажмите здесь.