Ruby/Базовые типы данных: различия между версиями

Содержимое удалено Содержимое добавлено
м <source> -> <syntaxhighlight> (phab:T237267)
 
Строка 15:
[[w:Число|Числа]] в Ruby выглядят так:
 
<sourcesyntaxhighlight lang="ruby">5 # целое число
-12 # отрицательное целое число
4.5 # число с плавающей точкой
076 # восьмеричное число
0b010 # двоичное число
0x89 # шестнадцатеричное число</sourcesyntaxhighlight>
 
Не будем пока углубляться и мельком взглянем на другие типы данных.
Строка 77:
* Много других методов. Все элементарные задачи для массивов решаются вызовом нужного метода.
 
<sourcesyntaxhighlight lang="ruby">
[1, 0, 740, 14, 25] # целочисленный массив
["a", "й", "6", 'Br', "Это массив строк, о них вы скоро узнаете"]
Строка 85:
["1-й элемент смешанного массива", "7.343", [4, "вепрь"],
[3, 67, 4326, 12, 3781357, 84221, "строка делает этот подмассив смешанным, но это не беда"]]
array = ["Этот массив пойдёт в переменную array", "Як-цуп-цоп, парви каридулла"]</sourcesyntaxhighlight>
 
Массив лучше всего вообразить как гусеницу или поезд с лапками-запятыми вместо колёс. Ползёт он всегда влево, на левом же конце его локомотив — первый элемент. Первый потому, что элементы упорядочены. Если знаете порядковый номер элемента, то легко получить его значение:
 
<sourcesyntaxhighlight lang="ruby">array[1] #=> "Як-цуп-цоп, парви каридулла"</sourcesyntaxhighlight>
 
В мире поездов-гусениц счёт вагонов начинается с локомотива, а не со следующего за ним вагона. Таким образом локомотив — это как бы нулевой вагон.
 
<sourcesyntaxhighlight lang="ruby">array[0] #=> "Этот массив пойдёт в переменную array"</sourcesyntaxhighlight>
 
Массивы кажутся странными с кавычками, но частенько бывают полезны при написании компьютерных программ. Возможно, вы даже поймёте, почему он ползёт всегда влево.
Строка 112:
Стро́ки начинаются и заканчиваются <code>"</code> (программистскими кавычками) или <code>'</code> (машинописным апострофом). Пример:
 
<sourcesyntaxhighlight lang="ruby">
"мама мыла раму" # строка в кавычках
'рама сопротивлялась' # строка в апострофах</sourcesyntaxhighlight>
 
Стро́ки подобны массивам символов, поэтому их часто преобразуют к массивам, чтобы использовать богатый набор методов, а потом результат делают строкой.
Строка 122:
[[w:Ассоциативный массив|Ассоциативные массивы]] подобны массивам [[w:Упорядоченная пара|упорядоченных пар]]. Работают они подобно словарям: фигурная скобка символизирует боковой вид на открытую книгу, а стрелка <code>=></code> покажет читателю связь каждой сущности с какой-то другой. Вторая фигурная скобка говорит, что пора закрывать книгу. В Ruby такие массивы именуются Hash
 
<sourcesyntaxhighlight lang="ruby">hash = {"мама"=>"мыла раму", 807=>"Это число улыбается!"}</sourcesyntaxhighlight>
 
Но можно и без фигурных скобок, одной стрелкой:
 
<sourcesyntaxhighlight lang="ruby">"Превед"=>"Медвед"</sourcesyntaxhighlight>
 
Например:
 
<sourcesyntaxhighlight lang="ruby">puts hash["мама"] #=> мыла раму
puts hash["807"] #=> nil
puts hash[807] #=> Это число улыбается!
puts hash[1] #=> nil
puts hash["Превед"] #=> Медвед</sourcesyntaxhighlight>
 
Ассоциативные массивы оставляют возможность хранения данных разного типа только в ассоциативном виде.
Строка 142:
Чтобы было удобней получать подмассив или подстроку, был введён простенький тип данных — диапазон (класс <code>Range</code>). Диапазон формируется тремя элементами: начало, конец и тип протяжённости (символ <code>..</code> или <code>...</code>). Начало и конец должны быть одного типа данных (одного класса) и быть ''перечисляемыми'', что значит, иметь метод <code>.succ</code>. Пример диапазонов:
 
<sourcesyntaxhighlight lang="ruby">"a".."z"
"a"..."z" # то же, что и "a".."y"
1..100
1...100 # то же, что и 1..99</sourcesyntaxhighlight>
 
Диапазон-мотоцикл (<code>..</code>) проезжает от первого указанного объекта к его <code>.succ</code> (''succedent'' — «последующему»), и до последнего включительно. Три точки — то же, но мотоцикл остановился прямо перед последним элементом. Ещё раз:
Строка 157:
Самодельные и неабстрактные составные типы данных называются классами. Если для вас это новость, то почитайте [[Объектно-ориентированное программирование|викиучебник об объектно-ориентированном программировании]] или [[w:Объектно-ориентированное программирование|статью в Википедии]]. Вообще, в Ruby ''всё'' в конечном счёте принадлежит классу <code>Object</code>.
 
<sourcesyntaxhighlight lang="ruby">str = "Я - строка"
str.class #=> String
str.class.superclass #=> Object</sourcesyntaxhighlight>
 
Классы можно определять и создавать по ним объекты. Стоит отметить интересную особенность языка - описание класса здесь это не просто некая описательная конструкция, не имеющая типа (как, например, в C++), а это объект (!) класса Class, дополненный пользовательскими методами и полями. Внутри класса может быть много всего интересного, и у него может быть фамильное [[w:Дерево (теория графов)|дерево]], то есть классы Ruby поддерживают наследование. Однако заметим, что [[w:Множественное наследование|множественное наследование]] в Ruby не разрешается. И ещё много всего интересного можно сделать с классами и объектами. Но об этом позже.